2017-02-02 9 views
0

gzipや他のモジュールを使ってPythonでgzipアーカイブの整合性をチェックする方法はありますか? Pythonでgzipアーカイブの整合性をチェックする

は、基本的には次は何をするかにPythonであり同等です:あなたは、このコマンドを実行し、出力を読み取るためにサブプロセスやosモジュールを使用することができます

gunzip -t my_archive.gz 

答えて

1

おっと、(今削除された)最初の答えだった結果を使用してosモジュール

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

を使用して、この

のようなもの。

私はgzipモジュールを使用してファイルを読み取り、読み取ったものを捨てることをお勧めします。どのような場合でも完全性をチェックするためには、ファイル全体をデコードする必要があります。私は壊れたzipファイルを読んでどのような例外がわからない(未テストコード)

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 

ようhttps://docs.python.org/2/library/gzip.html

何かがあなたが見つけると、その後にのみ、この特定の1つをキャッチしたい場合があり、スローされます。

+0

これを調べたところ、これはPythonでアーカイブをチェックする唯一の合理的な方法だという結論に達したので、私はあなたの答えを受け入れるでしょう。避けたかった... – wwn

0

。サブプロセスモジュールの質問を誤読の

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

ポイントは私は外部コマンドを使用したくないです。私は純粋なPythonでこれを達成したい – wwn

関連する問題