gzipや他のモジュールを使ってPythonでgzipアーカイブの整合性をチェックする方法はありますか? Pythonでgzipアーカイブの整合性をチェックする
は、基本的には次は何をするかにPythonであり同等です:あなたは、このコマンドを実行し、出力を読み取るためにサブプロセスやosモジュールを使用することができますgunzip -t my_archive.gz
gzipや他のモジュールを使ってPythonでgzipアーカイブの整合性をチェックする方法はありますか? Pythonでgzipアーカイブの整合性をチェックする
は、基本的には次は何をするかにPythonであり同等です:あなたは、このコマンドを実行し、出力を読み取るためにサブプロセスやosモジュールを使用することができますgunzip -t my_archive.gz
おっと、(今削除された)最初の答えだった結果を使用して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つをキャッチしたい場合があり、スローされます。
。サブプロセスモジュールの質問を誤読の
import subprocess
proc = subprocess.Popen(["gunzip", "-t", "my_archive.gz"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
ポイントは私は外部コマンドを使用したくないです。私は純粋なPythonでこれを達成したい – wwn
これを調べたところ、これはPythonでアーカイブをチェックする唯一の合理的な方法だという結論に達したので、私はあなたの答えを受け入れるでしょう。避けたかった... – wwn