私は電子メールで送信できるように出力を圧縮するpythonプログラム(v2.7)を実行しています。通常、これは期待どおりに動作しますが、圧縮されたファイルが非常に大きく、マシンのディスク領域が不足することがあります。しかし、ファインダを使用して手動でファイルを圧縮すると、正常に動作します。この場合、6MBファイルは1.6MBファイルに圧縮されますが、python zipメソッドは20Gファイルを生成します。python zipfile.ZipFile()メソッドは、6Mオリジナルから20Gのzipファイルを生成します。
zip = zipfile.ZipFile(zipfilename,"w",zipfile.ZIP_DEFLATED)
for f in os.listdir("."):
if fnmatch.fnmatch(f,"*final*"):
zip.write(f)
zip.close()
これを修正する方法や、少なくとも巨大なファイルの生成を避ける方法はありますか?
'f 'がディレクトリ、リンク、' zipfilename'である場合、 'zip.write(f)'は行いません。あなたは 'os.path.isfile()'と 'os.path.samefile()'を使うことができます。 – jfs