2017-02-01 3 views
0

ftpサーバのtarファイルからファイルをダウンロードしようとしています。このRead contents of .tar.gz file from website into a python 3.x objectに似た私は、tarファイルを開くために行くとき、私はtarfileとurllibを使ってpythonを使ってftpサイトからtarfileを開く

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 

(下記)ReadErrorを取得する私は、バッファサイズで何かが足りないのですか?もしそうなら、バッファサイズに慣れていない、どこに必要なバッファサイズに関する特定の情報があるのでしょうか?私はサイズを2倍と3倍にして無駄にしました。私もいくつかのファイルを試しました。私は手動でファイルをダウンロードして、私のマシン上でそれを開くことができるよ....任意のヘルプははるかに高く評価されて

答えて

0

が署名をよく見:

tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs) 

と説明:

指定された場合、fileobjはread()またはwrite() メソッド(モードによって異なる)を持つオブジェクトです。 bufsizeはブロックサイズを指定し、 のデフォルトは20 * 512バイトです。このバリアントをたとえば sys.stdin、ソケットファイルオブジェクトまたはテープデバイス。ただし、このような TarFileオブジェクトは、ランダムアクセスを許可しない点で制限されています。 の例を参照してください。あなたがする何を意味するのか

た:

tar = tarfile.open(fileobj=ftpstream, mode='r|bz2') 
+0

おかげで、私はそれを見ている必要があります。しかし、私の問題はまだ解決されていません。私は新しい問題で投稿を編集しました。 – SBFRF

+0

修正をブルートフォースしようとするときに問題が変わるたびに投稿を変更することは、スタックオーバーフローの仕組みではありません。 – TkTech

+0

よく@TkTech私の方法論が好きではない場合は申し訳ありませんが、私は自分の問題に対する解決策をどのように提案しますか? – SBFRF

関連する問題