【发布时间】:2020-09-20 11:34:09
【问题描述】:
我在一个文件夹中有几个 *.gz 文件,我想在它们上运行一个 python 脚本。但是,我一直在出错。这些错误与损坏的 gz 文件有关。
我想在正确压缩的 gz 文件中运行我的 python 脚本ONLY。我尝试了以下方法:
for i in *.gz;
do
if gzip -t $i
then
python myscript.py
else
echo 'file is corrupt'
fi
done;
但是我的脚本也在损坏的 gz 文件中运行(并且出现很多错误)。
或者,我可以修改 python 脚本以仅读取未损坏的 gz 文件吗?
我当前脚本的顶部是:
for tf in glob.glob('*.gz'):
tar = tarfile.open(tf)
tar.extractall()
tar.close()
files = [file for file in glob.glob('*.txt')] ..
如果我打开 gz 文件,我想保留它(因为我知道 gunzip 会在解压缩时删除原始 gz 文件)。
提前致谢
【问题讨论】:
-
gunzip -k,保持输入文件完整,不会删除它们
-
@gusa10 : 你有没有尝试手动
gunzip一个你的 Python 程序声称已损坏的存档?我的猜测是这些档案并没有真正损坏,但问题出在 Python 代码中。特别是,我认为您需要gzip.open,而不是tarfile.open -
是的,我无法再提取这些 *.gz 文件中的文件了。此外,它们的大小比预期的要小。这对我来说很奇怪,因为我之前处理过这些文件并且一切都很好。