Python zipfileを使っても圧縮されない



MySQLにテキストファイルをBlob形式で保存しようと考えていたのですが、

「容量節約のため、zipで圧縮したファイルを登録したほうがよいのでは?」

・・・と思い、Pythonでテキストファイルをzip圧縮する方法を調べました。


import zipfile

if __name__ == '__main__':
  z = zipfile.ZipFile('ziped.zip', 'w')
  z.write('data.txt')
  z.close()



しかし、生成されたzipファイルは、元のテキストファイルと
容量変わらず。

マニュアルを見てみると、
http://www.python.jp/doc/2.4/lib/zipfile-objects.html


■クラス ZipFile( file[, mode[, compression]]) 
compressionのデフォルト値は ZIP_STORED です。



なるほど、ZipFileオブジェクトを生成するとき、
圧縮したかったら、ちゃんとオプションを指定しなくちゃ
いけない模様。


import zipfile

if __name__ == '__main__':
  z = zipfile.ZipFile('ziped.zip', 'w', zipfile.ZIP_DEFLATED)
  z.write('data.txt')
  z.close()



ちゃんとZIP_DEFLATEDと指定してやると、圧縮されました。


もどる