Python 学習:書庫操作

2014-07-27 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
3、3、0、1、0、 1、1、0、0、0(41)で、換算ポイント 60pt 。
「化学業界」今朝は大丈夫だったがつい先ほど、7位にダウン。
・-・ - -・

さて、本文。


Pythonでは、標準で“ZIP”書庫の操作が出来る。

「Python 2.7ja1 documentation」の
「Python 標準ライブラリ」に、
12.4. zipfile - ZIP アーカイブの処理
がある。
  ZIP は一般によく知られているアーカイブ(書庫化)および
  圧縮の標準ファイルフォーマットです。
  このモジュールでは ZIP 形式のファイルの作成、読み書き、追記、
  書庫内のファイル一覧の作成を行うためのツールを提供します。
  より高度な使い方でこのモジュールを利用したいなら、
  PKZIP Application Note. に定義されている ZIP ファイルフォーマットを
  理解することが必要になるでしょう。

  このモジュールは現在のところ、マルチディスク ZIP ファイルを
  扱うことはできません ZIP64 拡張を利用する ZIP ファイル (サイズが 4GB を
  超えるような ZIP ファイル) は扱えます。
  このモジュールは暗号化されたアーカイブの復号をサポートしますが、
  現在のところ、暗号化ファイルを作成することはできません。
  C言語ではなく、Pythonで実装されているため、復号は非常に遅いです。

  他のアーカイブ形式については、bz2、gzip、および、
  tarfile モジュールを参照下さい。

  このモジュールでは、以下の項目が定義されています:
  ・・・・・
  ・・・・・


日本語の解説ページでは、
「Python入門から応用までの学習サイト」の
zip
がある。
  Pythonの標準ライブラリにてzipでの圧縮が可能です。
  非常に簡単なコードで実現可能ですので覚えておきましょう。
  zip圧縮
  まずは圧縮対象のファイルを用意します。
  空のファイルでなければ何でも良いので、下記ファイル名にて
  3つのファイルを作業ディレクトリに用意してください。
  ・ python.py
  ・ python.txt
  ・ python.csv
  サンプルコードは下記の通りです。

01 # -*- coding: utf-8 -*-
02
03 import zipfile
04
05 if __name__ == "__main__":
06
07 zipFile = zipfile.ZipFile("./compress_1.zip","w",zipfile.ZIP_STORED)
08 zipFile.write("./python.py")
09 zipFile.write("./python.txt")
10 zipFile.write("./python.csv")
11 zipFile.close()
12
13 zipFile = zipfile.ZipFile("./compress_2.zip","w",zipfile.ZIP_DEFLATED)
14 zipFile.write("./python.py")
15 zipFile.write("./python.txt")
16 zipFile.write("./python.csv")
17 zipFile.close()


  まずPythonのzip圧縮には複数のモードがあります。
  7行目にて指定されている「ZIP_STORED」は複数のファイルをまとめるのみで、
  ファイルサイズ自体の圧縮はされません。
  13行目の「ZIP_DEFLATED」ではファイルサイズも圧縮されますので、
  通常はこちらもモードを使用する事になるでしょう。
  ・・・・・
  ・・・・・


もう1つのサイト:「Python Snippets」の
zipファイルの読み書き
こちらは、“with”を使った方法。
更に、“作成”と“読み込み”両方。

Zipファイルの作成
  PythonプログラムでZipファイルを作成するには、
  zipfile.ZipFileオブジェクトを作成する。

import zipfile
with zipfile.ZipFile( 'foo.zip', "w", zipfile.ZIP_DEFLATED ) as zf:
zf.write( "bar.txt", "bar2.txt" )


  zipfileオブジェクトのwrite関数は、
  既存のファイルをzipファイルの中にアーカイブする関数。
  上の例では、ファイルシステム上に存在するbar.txtを
  zipファイルの中でのbar2.txtとしてzipファイルに含める。

  zipファイルの中のフォルダに含める場合は、
  パス構造としてファイル名を記述するだけでよい。

zf.write( "bar.txt", "hoge/bar3.txt" )


  ファイルシステムに存在するファイルではなく、
  ファイルの内容そのものをpythonから書き込む場合には、writestrを使う。

with zipfile.ZipFile( 'foo.zip', "w", zipfile.ZIP_DEFLATED ) as zf:
zf.writestr( "bar4.txt", "Hello World" )


  zipファイルの中にbar4.txtというファイルを作成し、
  ファイルの中身には”Hello World”というテキストを書き込む。

  Zipファイルの読み込み
  zipfile.ZipFileオブジェクトを読み込みモードで作成し、
  そこからZipファイル内のファイル名でopenする。
  あとは通常のファイル操作と同じ。

with zipfile.ZipFile( 'foo.zip', 'r' ) as zf:
with zf.open( 'bar4.txt' ) as bar4:
print bar4.read() # ============> Hello World


  ファイルを展開する場合には、extract,
  extractallを使用する。

with zipfile.ZipFile( 'foo.zip', 'r' ) as zf:
zf.extractall()



あ、“ZIP書庫”内のファイル名一覧の取得方法は???
これについては、別途、・・・

本日はここまで。


Python 学習は続く???


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140724
関連記事
スポンサーサイト

コメントの投稿

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

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク