파이썬에서 gzip 또는 다른 모듈을 사용하여 gzip 아카이브의 무결성을 검사 할 수있는 방법이 있습니까? 파이썬이 gzip 아카이브의 무결성 검사
은 기본적으로 다음은 무엇에 파이썬이 동일합니다 :이 명령을 실행하고 출력을 읽을 서브 프로세스 또는 OS 모듈을 사용할 수 있습니다gunzip -t my_archive.gz
파이썬에서 gzip 또는 다른 모듈을 사용하여 gzip 아카이브의 무결성을 검사 할 수있는 방법이 있습니까? 파이썬이 gzip 아카이브의 무결성 검사
은 기본적으로 다음은 무엇에 파이썬이 동일합니다 :이 명령을 실행하고 출력을 읽을 서브 프로세스 또는 OS 모듈을 사용할 수 있습니다gunzip -t my_archive.gz
아차, (지금 삭제) 첫 번째 대답했다 결과를 사용하여 os 모듈
import os
output = os.popen('gunzip -t my_archive.gz').read()
사용이
같은.
gzip
모듈을 사용하여 파일을 읽고 단지 읽은 것을 버리는 것이 좋습니다. 어쨌든 무결성을 검사하려면 전체 파일을 디코딩해야합니다. (테스트되지 않은 코드)
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를 읽기 것은 던져 무슨 예외 모르는 같은 https://docs.python.org/2/library/gzip.html
뭔가.
. 하위 프로세스 모듈 질문을 오독의
import subprocess
proc = subprocess.Popen(["gunzip", "-t", "my_archive.gz"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
외부 명령을 사용하고 싶지 않습니다. 나는 이것을 순수 파이썬에서 이루고 싶다 – wwn
나는 파이썬에서 아카이브를 검사하는 유일한 합리적인 방법이라는 결론을 내 렸습니다. 그래서 일반적으로 이것은 약간의 CPU 소모입니다. 피하고 싶었다 ... – wwn