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

问题描述

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

在最后阶段,单个文件已被解压缩,并将位于您当前的工作目录中,因此您可以对其进行一些操作