1
30,000のフォルダがあり、各フォルダには5つのbz2ファイルのjsonデータが含まれています。python os walkで30,000のサブフォルダ内のbz2ファイルを解凍しますか?
os.walk()を使用してファイルパスをループし、各圧縮ファイルを解凍して元のディレクトリに保存しようとしています。
import os
import bz2
path = "/Users/mac/PycharmProjects/OSwalk/Data"
for(dirpath,dirnames,files) in os.walk(path):
for filename in files:
filepath = os.path.join(dirpath , filename)
newfilepath = os.path.join(dirpath , filename + '.decompressed')
with open(newfilepath , 'wb') as new_file ,
bz2.BZ2File(filepath , 'rb') as file:
for data in iter(lambda: file.read(100 * 1024) , b''):
new_file.write(data)
コードの実行中に次のエラーが発生します。
File
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_compr
ession.py", line 103, in read
data = self._decompressor.decompress(rawblock, size)
OSError: Invalid data stream
私は何か他のものを解凍方法でMac上でコードを実行しているか、私が行方不明です問題があり得ること読みましたか?
if文に追加しましたが、コードは実行されません。私はbz2インポートモジュールでそれがあるのだろうか? – tomoc4
それは異なります。これらのファイルをどのように圧縮しますか? – kichik
.tar形式のWebからファイルをダウンロードしました。私はtarを通常のフォルダディレクトリに変換しました。圧縮は私が仮定したサーバーから行われました – tomoc4