我正在尝试提取一个压缩文件夹,但不是直接使用.extractall()
,我想将文件提取到流中,以便我可以自己处理流。是否可以使用它来做到这一点tarfile
?或者有什么建议吗?
问问题
17644 次
2 回答
22
您可以使用该方法从 tar 文件中获取每个文件作为 pythonfile
对象。.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())
蟒蛇 2.7.13
于 2016-12-17T04:01:40.417 回答