gzip -t 循环和 运行 脚本

gzip -t in a loop and run script

我在一个文件夹中有几个 *.gz 文件,我想 运行 在它们上面创建一个 python 脚本。但是,我一直收到错误。这些错误与损坏的 gz 文件有关。

我希望 运行 我的 python 脚本 在 gz 文件中正确压缩。我尝试了以下方法:

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 -t $i

相反,检查是否有损坏:

for i in *.gz;
do
    if gunzip -t $i
    then
        python myscript.py
    else
        echo 'file is corrupt'
    fi
done;

gunzip 默认解压。

-t 测试文件的完整性。

要用 bash 完成这一切:

for i in *.gz;
do
    if gunzip -t $i
    then
        gzip -d  # -d decompress
    else
        echo 'file is corrupt'
    fi
done;

当您将 -k 选项传递给它时,gunzip 会保留原始文件,-k 表示保留输入文件