Symfoware

Symfowareについての考察blog

Python パスワード付きzipファイルの作成、解凍(pyminizip)

Pythonでzipファイルを作る方法を調べたことがあります。
Pythonでrarファイルを解凍し、zipで圧縮する

パスワードはどうやって設定するのか気になったのでメモしておきます。


zipファイルの作成



まずはパスワードを指定しないzipファイルを作成するプログラム。


  1. # -*- coding:utf-8 -*-
  2. import zipfile
  3. zf = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)
  4. zf.write('img/cc2.jpg', 'cc2.jpg')
  5. zf.write('img/img_0.jpg', 'img_0.jpg')
  6. zf.write('img/img_1.jpg', 'img_1.jpg')
  7. zf.close()




ZIP アーカイブの処理
マニュアルを見てみると、どうもパスワード付きファイルの解凍はできるけど、
パスワード付きzipは作成できない模様。

こちらを見てみると、pyminizipを使えば良いよとのこと。
Python Script for Creating Password-Protected Zip File

pyminizip
https://github.com/smihica/pyminizip

Ubuntu 14.04にインストールします。


$ sudo apt-get install zlib1g
$ sudo easy_install pyminizip




使い方は、追加するファイルと出力先のzipファイル。
パスワードと圧縮レベルを指定する模様。

圧縮レベルは1-9で、数字が大きくなるほど高圧縮。デフォルトは0(無圧縮)


  1. pyminizip.compress(
  2.     "/srcfile/path.txt",
  3.     "/distfile/path.zip",
  4.     "password",
  5.     int(compress_level))





こんなコードで試してみます。


  1. # -*- coding:utf-8 -*-
  2. import pyminizip
  3. pyminizip.compress("img/cc2.jpg", "test.zip", "symfoware", 0)




ちゃんとパスワード付きのzipファイルが出来ました。

577_01.png


複数のファイルをzipに含めたいときは、compress_multipleにリストを渡します。


  1. # -*- coding:utf-8 -*-
  2. import pyminizip
  3. files = [ "img/cc2.jpg", "img/img_0.jpg", "img/img_1.jpg" ]
  4. pyminizip.compress_multiple(files, "test.zip", "symfoware", 0)



出来ました。

577_02.png




パスワード付きzipの解凍



パスワードが付いているzipファイルの解凍は、Pythonの標準ライブラリでも行えます。
先ほど作成したzipファイルから、cc2.jpgを取り出してみます。


  1. # -*- coding:utf-8 -*-
  2. import zipfile
  3. zf = zipfile.ZipFile('test.zip', 'r')
  4. # パスワードを設定
  5. zf.setpassword('symfoware')
  6. # 内容の一部を復元
  7. with open('cc2.jpg', 'wb') as f:
  8.     f.write(zf.read('cc2.jpg'))
  9.     # ここでパスワードを指定してもOK
  10.     # f.write(zf.read('cc2.jpg', 'symfoware'))
  11. zf.close()




関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/03/04(水) 20:21:38|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHP パスワード付きzipファイルの作成、解凍(zip,unzipコマンド) | ホーム | R言語 ggmapでGoogleMapに座標を上書きし、画像として保存する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1667-7b7ad3a8
この記事にトラックバックする(FC2ブログユーザー)