12.2. gzip — gzip ファイルのサポート — Python 2.7ja1 documentation

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 12. データ圧縮とアーカイブ »

# 12.2. `gzip` — gzip ファイルのサポート

このモジュールは、ファイルをGNUの gzip, gunzip のように圧縮、伸長するシンプルなインタフェースを提供しています。

データ圧縮は `zlib` モジュールで提供されています。

`gzip` モジュールは、Pythonのファイルオブジェクトに似た `GzipFile` クラスを提供しています。 `GzipFile` クラスは gzip フォーマットのファイルを読み書きします。自動的にデータを圧縮・伸張するので、外からは通常のファイルオブジェクトのように見えます。

compress や pack 等によって作られる、 gzip や gunzip が伸長できる他のファイルフォーマットについては、このモジュールは対応していないので注意してください。

他のアーカイブフォーマットについては、 `bz2`, `zipfile`, `tarfile` モジュールを参照してください。

このモジュールでは以下の項目を定義しています:

class `gzip.` `GzipFile`([filename[, mode[, compresslevel[, fileobj[, mtime]]]]])

  `GzipFile` クラスのコンストラクタです。 `GzipFile` オブジェクトは `readinto()` と `truncate()` メソッドを除くほとんどのファイルオブジェクトのメソッドをシミュレートします。少なくとも fileobj および filename は有効な値でなければなりません。

  クラスの新しいインスタンスは、 fileobj に基づいて作成されます。 fileobj は通常のファイル、 `StringIO` オブジェクト、そしてその他ファイルをシミュレートできるオブジェクトでかまいません。値はデフォルトでは None で、ファイルオブジェクトを生成するために filename を開きます。

  gzip ファイルヘッダ中には、ファイルが解凍されたときの元のファイル名を収めることができますが、 fileobj が `None` でない場合、引数 filename がファイル名として認識できる文字列であれば、 filename はファイルヘッダに収めるためだけに使われます。そうでない場合（この値はデフォルトでは空文字列です）、元のファイル名はヘッダに収められません。

  mode 引数は、ファイルを読み出すのか、書き込むのかによって、 `'r'`, `'rb'`, `'a'`, `'ab'`, `'w'`, そして `'wb'` のいずれかになります。 fileobj のファイルモードが認識可能な場合、 mode はデフォルトで fileobj のモードと同じになります。そうでない場合、デフォルトのモードは `'rb'` です。 ‘b’ フラグがついていなくても、ファイルがバイナリモードで開かれることを保証するために ‘b’ フラグが追加されます。これはプラットフォーム間での移植性のためです。

  compresslevel 引数は `1` から `9` までの整数で、圧縮のレベルを制御します。 `1` は最も高速で最小限の圧縮しか行いません。 `9` は最も低速ですが、最大限の圧縮を行います。デフォルトの値は `9` です。

  mtime 引数はオプションで、圧縮時にストリームに書かれる数値型のタイムスタンプです。 gzip で圧縮された全てのストリームはタイムスタンプを必要とします。省略された場合や `None` が渡された場合は、現在の時刻が利用されます。このモジュールは伸長時にはタイムスタンプを無視しますが、 gunzip などのいくつかのプログラムはタイムスタンプを利用します。タイムスタンプのフォーマットは `time.time()` の戻り値や、 `os.stat()` の戻り値となるオブジェクトの `st_mtime` メンバと同じです。

  圧縮したデータの後ろにさらに何か追記したい場合もあるので、 `GzipFile` オブジェクトの `close()` メソッド呼び出しは fileobj をクローズしません。この機能によって、書き込みのためにオープンした `StringIO` オブジェクトを fileobj として渡し、(`GzipFile` を `close()` した後に) `StringIO` オブジェクトの `getvalue()` メソッドを使って書き込んだデータの入っているメモリバッファを取得することができます。

  `GzipFile` はイテレーションと `with` 文をサポートします。

  バージョン 2.7 で変更: `with` 構文のサポートが追加されました。

  バージョン 2.7 で変更: zero-pad されたファイルのサポートが追加されました。

`gzip.` `open`(filename[, mode[, compresslevel]])

  `GzipFile(filename,` `mode,` `compresslevel)` の短縮形です。引数 filename は必須です。デフォルトで mode は `'rb'` に、 compresslevel は `9` に設定されています。

## 12.2.1. 使い方の例

圧縮されたファイルを読み込む例:

    import gzip
    f = gzip.open('/home/joe/file.txt.gz', 'rb')
    file_content = f.read()
    f.close()

GZIP圧縮されたファイルを作成する例:

    import gzip
    content = "Lots of content here"
    f = gzip.open('/home/joe/file.txt.gz', 'wb')
    f.write(content)
    f.close()

既存のファイルをGZIP圧縮する例:

    import gzip
    f_in = open('/home/joe/file.txt', 'rb')
    f_out = gzip.open('/home/joe/file.txt.gz', 'wb')
    f_out.writelines(f_in)
    f_out.close()
    f_in.close()

参考

Module `zlib`
  gzip ファイル形式のサポートを行うために必要な基本ライブラリモジュール。

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python 標準ライブラリ »
- 12. データ圧縮とアーカイブ »