gpt4 book ai didi

python - 使用 'tarfile' 时跳过损坏的文件 (.tar.gz)

转载 作者:行者123 更新时间:2023-12-01 08:27:23 26 4
gpt4 key购买 nike

我的文件夹中有 100 多个 .tar.gz 文件。其中一些文件已损坏。

我正在尝试提取所有这些内容。如果文件损坏,我想跳过该存档并移至下一个文件。另外,如果可能的话,最后我想要一个提取失败的文件列表。

import os
import tarfile
files = os.listdir('G:\\A')
for file in files:
id = file.split('.')
with tarfile.open('G:\\A\\' + file,'r:gz') as tar:
tar.extractall(path='G:\\A\\Extracted\\' + id[0])

循环按预期进行,但是当遇到损坏的存档时,它会给出错误:“压缩文件在到达流结束标记之前结束”

编辑:根据 ILI 评论,我尝试遵循,但遇到了同样的错误。

BLOCK_SIZE = 1024
for file in files:
with tarfile.open('G:\\Sat Img\\' + file) as tardude:
for member in tardude.getmembers():
with tardude.extractfile(member.name) as target:
for chunk in iter(lambda: target.read(BLOCK_SIZE), b''):
pass

最佳答案

如果我正确理解你的问题,你可能正在寻找像这样的修改:

import os
import tarfile
files = os.listdir('G:\\A')
for file in files:
id = file.split('.')
try:
with tarfile.open('G:\\A\\' + file,'r:gz') as tar:
tar.extractall(path='G:\\A\\Extracted\\' + id[0])
except tarfile.ReadError: # reading tarfile failed
continue # move on to the next one

不确定您的文件是如何损坏的以及您会看到什么类型的错误,因此您可能需要捕获不同的异常。

关于python - 使用 'tarfile' 时跳过损坏的文件 (.tar.gz),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54157244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com