在Python中,是否有使用gzip或其他模块来检查gzip归档文件完整性的方法?
基本上,是否有Python等效于以下内容的方法:
gunzip -t my_archive.gz
抱歉,第一个回答(现已删除)是由于错误阅读问题导致的。
我建议使用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) != b'':
pass
except:
ok = False
我不知道读取损坏的zip文件会抛出什么异常,你可能需要找出并只捕获这个特定的异常。
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()
except zlib.error:
,你也可以将 try 行缩短为while f.read(chunksize):
,不需要!= ''
。 - SurpriseDogok = False
,只有在成功时才返回True
。目前,其他异常会让用户认为 gz 文件没问题,即使它实际上有问题。 - erip