私は少しヘルパー関数を作りました:
import zipfile
def main(archive_list=[],zfilename='default.Zip'):
print zfilename
zout = zipfile.ZipFile(zfilename, "w")
for fname in archive_list:
print "writing: ", fname
zout.write(fname)
zout.close()
if __== '__main__':
main()
問題は、すべてのファイルが圧縮されていないことです!ファイルは同じサイズであり、事実上、拡張子のみが「.Zip」に変更されています(この場合は「.xls」から)。
WinXP sp2でpython 2.5を実行しています。
これは、ZipFile
で圧縮方法を指定する必要があるためです。指定しない場合、圧縮方法はzipfile.Zip_STORED
であると想定されます。これは、ファイルを圧縮せずに保存するだけです。メソッドをzipfile.Zip_DEFLATED
に指定する必要があります。このためにzlib
モジュールをインストールする必要があります(デフォルトでは通常がインストールされています)。
import zipfile
def main(archive_list=[],zfilename='default.Zip'):
print zfilename
zout = zipfile.ZipFile(zfilename, "w", zipfile.Zip_DEFLATED) # <--- this is the change you need to make
for fname in archive_list:
print "writing: ", fname
zout.write(fname)
zout.close()
if __== '__main__':
main()
Zip
形式を圧縮する非常に簡単な方法があります。
で使用 shutil.make_archive
図書館。
例えば:
import shutil
shutil.make_archive(file_name, 'Zip', file location after compression)
より詳細なドキュメントを参照できます: Here