问题描述
我有相当大的 *.tar.gz
文件 (10Gb),其中包含个人文件(无子文件夹)。在 Jupyter Notebook 中,解压这个档案需要几个小时。提取所有文件后,我需要将它们上传到存储位置。
这是我目前拥有的:
untar = tarfile.TarFile(tarfilename)
untar.extractall()
untar.close()
是否可以动态(即连续)提取 *.tar.gz
的内容?像这样:
with open(tarfilename,"r") as tararchive:
for eachfile in tararchive:
save_to_storage_location(eachfile)
因此,与其等到 tar
存档解压缩,我只想“打开”它并将所有内容一一移动到存储位置。
解决方法
对软件包稍加修改后,我发现您可以列出 tar 文件下的所有文件,并且可以单独提取它们。如果没有关于您之后想对文件做什么的更多信息(即您想在何处或如何上传它们),我对此无能为力。
您可以像这样循环浏览您的文件:
import tarfile
with tarfile.open("path/to/file.tar.gz","r") as file:
for each in file.getnames():
print(each)
file.extract(each)
在最后阶段,单个文件已被解压缩,并将位于您当前的工作目录中,因此您可以对其进行一些操作