我有一个包含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
另请注意,我可以手动解压缩文件。
答案 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))