使用 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))
我有一个文件夹 (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))