2017-02-02 3 views
0

파이썬에서 gzip 또는 다른 모듈을 사용하여 gzip 아카이브의 무결성을 검사 할 수있는 방법이 있습니까? 파이썬이 gzip 아카이브의 무결성 검사

은 기본적으로 다음은 무엇에 파이썬이 동일합니다 :이 명령을 실행하고 출력을 읽을 서브 프로세스 또는 OS 모듈을 사용할 수 있습니다

gunzip -t my_archive.gz 

답변

1

아차, (지금 삭제) 첫 번째 대답했다 결과를 사용하여 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

뭔가.

+0

나는 파이썬에서 아카이브를 검사하는 유일한 합리적인 방법이라는 결론을 내 렸습니다. 그래서 일반적으로 이것은 약간의 CPU 소모입니다. 피하고 싶었다 ... – wwn

0

. 하위 프로세스 모듈 질문을 오독의

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

외부 명령을 사용하고 싶지 않습니다. 나는 이것을 순수 파이썬에서 이루고 싶다 – wwn