使用 python 提取 tarfile 列表

Extract a list of tarfile using python

我有一个文件夹 (dataset_folder),其中包含 10 个 *.tar 文件。 这是我在特定路径中提取它们的代码。

listtar=glob.glob(dataset_folder+'/*.tar')
for file in listtar:
    tar=tarfile.open(file)
    tar.extractall(path=dataset_folder)
    tar.close()

注意dataset_folder在当前目录下。 我收到一个错误

ReadError: unexpected end of data

另请注意,我可以手动取消tar 文件而不会出现问题。

听起来 tar 文件之一已损坏或 tar 文件无法处理的格式

https://docs.python.org/3/library/tarfile.html#tarfile.ReadError

如果您可以在 shell 中访问 tar,请尝试这样的操作,将 "tmp" 替换为您的数据集文件夹。

for i in tmp/*.tar; do tar -C tmp -xvf $i || echo "$i is a problem"; done

直接从Python处理损坏的文件,捕获相关的异常并跳过损坏的文件:

listtar=glob.glob(dataset_folder+'/*.tar')
for file in listtar:
    try:
        with tarfile.open(file) as tar:
            tar.extractall(path=dataset_folder)
    except tarfile.ReadError:
        print("File {} is corrupt".format(file))