私は何もディスクに保存できない環境で働いています。私はtarファイルを引き出し、ディスクに保存せずに解凍できる必要があります。これが失敗するようだ:Pythonを使用して、純粋にメモリ内のファイルをuntarしますか?
私はこれを試してみたが、それはエラー投げる:私は、エラーラインに次のトレースバックを得る上記のコードブロックで説明したように
# fetch.py
from cStringIO import StringIO
import requests
url = "http://example.com/data.tar.gz"
response = requests.get(url)
# ERROR is thrown here. Error shown below
tar = tarfile.open(mode= "r:gz", fileobj = StringIO(response.content))
# This SHOULD break as tar.extract() saves to disk.
# Can't tell because of error on previous line of code.
data = tar.extract()
を:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "./importers/bestbuy_fetcher.py", line 23, in download_bestbuy_batch
tar = tarfile.open(mode= "r:gz", fileobj = StringIO(response.content))
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/tarfile.py", line 1662, in open
return func(name, filemode, fileobj, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/tarfile.py", line 1711, in gzopen
**kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/tarfile.py", line 1689, in taropen
return cls(name, mode, fileobj, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/tarfile.py", line 1568, in __init__
self.firstmember = self.next()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/tarfile.py", line 2324, in next
raise ReadError(str(e))
ReadError: invalid header
'response.content'が有効なgzip形式のtarファイルではないため、エラーが発生します。 – geoffspear
これは意味があります:有効なgzip形式のtarファイルにするにはどうすればいいですか? – pydanny
localhostから提供された有効なtar.gz。あなたは悪いtarballを受け取っているだけかもしれません。 – codysoyland