Python检查gzip存档的完整性

时间:2017-02-02 09:14:30

标签: python gzip

Python中是否有办法使用gzip或其他模块来检查gzip存档的完整性?

在Python中基本上与以下内容相同:

gunzip -t my_archive.gz

2 个答案:

答案 0 :(得分:1)

哎呀,第一个答案(现已删除)是误读问题的结果。

我建议使用gzip模块来阅读文件,然后扔掉你所读的内容。您必须解码整个文件,以便在任何情况下检查其完整性。 https://docs.python.org/2/library/gzip.html

类似(未经测试的代码)

import gzip
chunksize=10000000 # 10 Mbytes

ok = True
with gzip.open('file.txt.gz', 'rb') as f:
    try:
        while f.read(chunksize) != '':
            pass
    except:
        ok = False

我不知道读取损坏的zipfile会抛出什么异常,你可能想知道然后只捕获这个特定的。

答案 1 :(得分:0)

您可以使用subprocess或os模块执行此命令并读取输出。像这样的东西

使用os模块

import os 
output = os.popen('gunzip -t my_archive.gz').read()

使用子流程模块

import subprocess
proc = subprocess.Popen(["gunzip", "-t", "my_archive.gz"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()