Pythonの技法:ZIPアーカイブへの書き込みと追記

文:Nick Gibson(Builder AU)
翻訳校正:原井彰弘
2008/01/08 14:00

前回の記事ではzipアーカイブの読み取りに関して説明したが、本稿ではそれに引き続いて、Pythonを用いたアーカイブの作成方法について解説する。

 もし、前回のzipアーカイブの読み取りに関する記事を読んでいないのであれば、一通り読んでみることをおすすめしたい。本稿では、前回の記事に登場した「file1.txt」と「file2.txt」を引き続き例として用いている。

 さて、ただ単に複数のファイルを含んだ新しいzipファイルを作成したいだけなら、zipfileモジュールを用いてわずか数行で記述することが可能である。それにはまず、書き込みモードでアーカイブを作成することから始めよう。

>>> import zipfile
>>> z = zipfile.ZipFile("test2.zip", "w")

 その上で、次のようにファイルの追加を行う。

>>> z.write("file1.txt")
>>> z.write("file2.txt")

 これだけで、本質的な部分はすべて終わりである。ファイルのオープンや読み込み、圧縮、アーカイブへの挿入など、細かな部分はzipfileモジュールがすべて行ってくれるのだ。信じられない?それでは、実行後のファイルの内容を実際に見てみよう。まずファイルを一度閉じ、読み取りモードとしてもう一度開いてみる。

>>> z.close()
>>> z = zipfile.ZipFile("test2.zip")
>>> z.printdir()
File Name                                             Modified             Size
file1.txt                                      2007-10-11 14:03:12           54
file2.txt                                      2007-10-11 14:03:32           37

 前回の記事で書いた関数と同様に、zipfileのprintdir()メソッドがアーカイブ内のファイルを出力しているということが、お分かりいただけたと思う。もちろん、以下のようにしてファイルにデータが正しく含まれていることをチェックしてもよい。

>>> print z.read("file1.txt")
File One Contents

"Testing, testing, one two three."

 さて、新しくzipアーカイブを作成する方法は分かったが、すでに存在するzipアーカイブにファイルを追加したい場合は、どうすればよいのだろうか?実はこれも単純で、ただ単に追記モードでファイルを開けばよいだけなのである。もしここで誤って書き込みモードでzipファイルを開いてしまうと、ファイルの内容が削除されてしまう。追記を行う場合にはくれぐれも注意していただきたい。

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 5日前
  • 6日前
  • 7日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ