Python 3.5を使用してgzipファイルから圧縮されていないファイルを書き込むメモリ効率的な方法
私はgzipファイルを解凍して別のファイルに書き出しています。メモリの問題のうちに見た後、私はgzipのモジュールのドキュメントに例を見つける:
import gzip
import shutil
with open('/home/joe/file.txt', 'rb') as f_in:
with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
これは圧縮を行い、そして私が解凍したいので、私は与えて、私はちょうどパターンを逆にすることができていること、それを取ります
with gzip.open(zipped_file, 'rb') as zin, open(unzipped_file, 'wb') as wout:
wout.write(zin.read())
どちらか私は最後の藁の上に置かれ、または私は、ファイルは次のように行動するだろうと信じにナイーブだった:私の質問は、なぜ私は、次のとメモリのトラブルにもらったのさ
with open(unzipped_file, 'wb') as f_out, gzip.open(zipped_file, 'rb') as f_in:
shutil.copyfileobj(f_in, f_out)
解凍プロセスをストリームし、メモリをほとんど使用しません。これらの2つの方法は同等であるべきですか?
'shutil.copyfileObj'メソッドのコードを見ることをお勧めします。 –
"ファイルがジェネレータのように振舞うと信じていたのは純粋だった*" - それだけです。あなたはあなた自身の質問に答えました。 –