zipフォルダーを抽出しようとしていますが、を直接使用するのではなく.extractall()
、ファイルをストリームに抽出して、自分でストリームを処理できるようにします。を使用してそれを行うことは可能tarfile
ですか?または何か提案はありますか?
17644 次
2 に答える
22
file
メソッドを使用して、各ファイルをPythonオブジェクトとしてtarファイルから取得できます.extractfile()
。インスタンスをループして、tarfile.TarFile()
すべてのエントリを一覧表示します。
import tarfile
with tarfile.open(path) as tf:
for entry in tf: # list each entry one by one
fileobj = tf.extractfile(entry)
# fileobj is now an open file object. Use `.read()` to get the data.
# alternatively, loop over `fileobj` to read it line by line.
于 2012-11-26T09:46:37.783 に答える
1
extractfile
tarファイルをネットワークストリーミングしている間はできませんでした。代わりに次のようなことをしました。
from backports.lzma import LZMAFile
import tarfile
some_streamed_tar = LZMAFile(requests.get('http://some.com/some.tar.xz').content)
with tarfile.open(fileobj=some_streamed_tar) as tf:
tarfileobj.extractall(path="/tmp", members=None)
そしてそれらを読むために:
for fn in os.listdir("/tmp"):
with open(os.path.join(t, fn)) as f:
print(f.read())
Python 2.7.13
于 2016-12-17T04:01:40.417 に答える