如何动态提取`*.tar.gz`的内容

How to extract the content of `*.tar.gz` dynamically

我有相当大的 *.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)

在最后阶段,单个文件已被提取并将位于您当前的工作目录中,因此您可以使用它做一些事情