首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python使用tarfile和urllib从ftp站点打开tarfile

使用python使用tarfile和urllib从ftp站点打开tarfile
EN

Stack Overflow用户
提问于 2017-02-01 17:13:40
回答 1查看 1K关注 0票数 0

我正在尝试从ftp服务器上的tar文件中下载一个文件。类似于这个Read contents of .tar.gz file from website into a python 3.x object,当我打开tarfile时,我得到一个ReadError (如下所示)

代码语言:javascript
复制
ftpURL = u'ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/wave/prod/multi_1.20170201/multi_1.t00z.spec_tar.gz'
ftpstream = urllib.urlopen(ftpURL)
tar = tarfile.open(fileobj=ftpstream, mode='r|bz2')    # here's where i get the error 
Traceback (most recent call last):
  File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-20-c3e97355618c>", line 1, in <module>
    tar = tarfile.open(fileobj=ftpstream, mode='r|bz2')
  File "C:\Anaconda2\lib\tarfile.py", line 1703, in open
    t = cls(name, filemode, stream, **kwargs)
  File "C:\Anaconda2\lib\tarfile.py", line 1587, in __init__
    self.firstmember = self.next()
  File "C:\Anaconda2\lib\tarfile.py", line 2355, in next
    tarinfo = self.tarinfo.fromtarfile(self)
  File "C:\Anaconda2\lib\tarfile.py", line 1251, in fromtarfile
    buf = tarfile.fileobj.read(BLOCKSIZE)
  File "C:\Anaconda2\lib\tarfile.py", line 579, in read
    buf = self._read(size)
  File "C:\Anaconda2\lib\tarfile.py", line 598, in _read
    raise ReadError("invalid compressed data")
ReadError: invalid compressed data

我是不是漏掉了缓冲区大小的东西?如果是这样的话,如果不熟悉缓冲区大小,在哪里可以找到有关所需缓冲区大小的特定信息,那么我必须将缓冲区大小增加一倍和三倍才无效。我也试过几个文件。我可以手动下载这个文件并在我的机器上打开它.任何帮助都非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2017-02-01 17:22:36

仔细看签名:

代码语言:javascript
复制
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)

以及描述:

如果给定的话,fileobj可以是具有read()或write()方法的任何对象(取决于模式)。bufsize指定块大小,默认为20 * 512字节。将此变体与例如sys.stdin、套接字文件对象或磁带设备结合使用。但是,这样的TarFile对象是有限的,因为它不允许随机访问,参见示例。

你想做的是:

代码语言:javascript
复制
tar = tarfile.open(fileobj=ftpstream, mode='r|bz2')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41985679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档