Python中是否有办法使用gzip或其他模块来检查gzip存档的完整性?
在Python中基本上与以下内容相同:
gunzip -t my_archive.gz
答案 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()