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ファイルを開いてしまうと、ファイルの内容が削除されてしまう。追記を行う場合にはくれぐれも注意していただきたい。
- 0人の推薦記事
- 1人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
- 今日のトップ記事
- 昨日
- 2日前
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
Database
Google
ユーザーインタフェース
Linux
CSS
仮想化ソフトウェア
オープンソース
Flash
JavaScript
RIA
小技
SOA
iPhone 3G
Internet Explorer
server
Ajax
ブラウザ
開発環境
Webデザイン
入門
プログラミング言語
HTML
PHP
Mac OS X
デザイン
Adobe
Java
モバイル
Windows
Webサービス
Tips
Firefox
プロジェクト管理
Safari
ソフトウェア開発
リファレンス
Firefox 3
携帯電話機
UI
Python
レビュー
iPhone
脆弱性
Mozilla
仮想化
Off Topic
iPod touch
Apple
データベース
Webアプリケーション開発
話題のタグを見る »
ソーシャルテクノロジーをビジネスに利用する
Mozilla Labs、Firefoxで地理情報を認識活用できるプラグイン「Geode」を正式発表
DelphiのパフォーマンスをDelphiで改善:エンバカデロの製品戦略
社内政治を生き抜くための教訓10箇条
iPhoneでVoIP--Fringを早速試す
Firefox 3のブックマーク構造を理解しよう
ウェブページの段組みをレイアウトするCSS 3のMulti Column
ラウンドアップ:「優れたUI」を実現するためのアプローチ
MSのバルマー氏、「Windows Cloud」の発表を示唆
ZDNet Japan Green IT
グリーンITの第一歩は見える化です
KDDI「SaaSソリューション」
エンタメCGM「gooメーカー☆メーカー」
Techno Exchange
これからの時代のセキュリティ対策