複数の.gz jsonファイル(ファイルはテキストファイル)を解析しようとしています。 Python 2.7.10。複数の.gzファイルを読み取るエラー:解凍中にエラー-3が発生しました:無効なコードの長さが設定されました
error: Error -3 while decompressing: invalid code lengths set
をし、実行を停止します。しかし、ほとんどのこれらのファイル内の各ラインの解析の最後に、それはこのエラーを生成します。
これは私のコードです:
import gzip
import json
from multiprocessing import Pool, cpu_count
def build_list(file_name):
count = 0
try:
json_file = gzip.open(file_name, "r")
except Exception as e:
print e
else:
# Data parsing
for line in json_file:
try:
row = json.loads(line)
except Exception as e:
print e
else:
count += 1
if __name__ == "__main__":
files = ["h1.json.gz", "h2.json.gz", "h3.json.gz", "h4.json.gz", "h5.json.gz"]
pool = Pool(processes=cpu_count()-1)
pool.map(build_list, files)
プログラムがうまく実行されていると私はtop
に確認したときにファイルが各プロセッサに割り当てられていることを開始することを明らかにすることが重要です。私もgunzip -t
とファイルの整合性をチェックし、彼らはよく形成されているようだ。また、エラーの前に発生した例外はありませんでした。どのように修正することができますか?前もって感謝します。
バイナリモードで読み込み:gzip.open(...、 "rb"、...)。私はほぼ肯定的です。私はこのソリューションの日を前に見たことを誓って、これは欺瞞ですが、私は質問を見つけることができません。 – Max