使用python提取tarfile列表

时间:2018-04-23 15:30:12

标签: python zip tar

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

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

另请注意,我可以手动解压缩文件。

2 个答案:

答案 0 :(得分:1)

听起来其中一个tar文件已损坏或tarfile无法处理的格式

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

答案 1 :(得分:1)

直接从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))