12.2. gzip — gzipファイルのサポート—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/gzip
移動先:案内検索

12.2。 gzip - へのサポート gzip ファイル

ソースコード: :source: `Lib / gzip.py`



このモジュールは、GNUプログラム gzip および gunzip と同じように、ファイルを圧縮および解凍するためのシンプルなインターフェイスを提供します。

データ圧縮は、 zlib モジュールによって提供されます。

gzip モジュールは、Pythonのファイルオブジェクトをモデルにした GzipFile クラスを提供します。 GzipFile クラスは、 gzip 形式のファイルの読み取りと書き込みを行い、データを自動的に圧縮または解凍して、通常のファイルオブジェクトのように見せます。

compress および pack によって生成されるものなど、 gzip および gunzip プログラムによって解凍できる追加のファイル形式は次のとおりです。このモジュールではサポートされていません。

このモジュールは、次の項目を定義します。

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

GzipFile クラスのコンストラクター。これは、readinto()メソッドとtruncate()メソッドを除いて、ファイルオブジェクトのほとんどのメソッドをシミュレートします。 fileobjfilename の少なくとも1つに重要な値を指定する必要があります。

新しいクラスインスタンスは、 fileobj に基づいています。これは、通常のファイル、 StringIO オブジェクト、またはファイルをシミュレートするその他のオブジェクトです。 デフォルトはNoneです。この場合、ファイル名が開かれ、ファイルオブジェクトが提供されます。

fileobjNoneでない場合、 filename 引数は、 gzip ファイルヘッダーにインクルードするためにのみ使用されます。これには元のファイル名が含まれる場合があります。圧縮されていないファイルの。 識別可能な場合、デフォルトで fileobj のファイル名になります。 それ以外の場合は、デフォルトで空の文字列になります。この場合、元のファイル名はヘッダーに含まれません。

mode 引数は、'r''rb''a''ab''w'、または[ X99X] 、ファイルが読み取られるか書き込まれるかによって異なります。 識別可能な場合、デフォルトは fileobj のモードです。 それ以外の場合、デフォルトは'rb'です。 指定しない場合、クロスプラットフォームの移植性のためにファイルがバイナリモードで開かれるように、モードに「b」フラグが追加されます。

compresslevel 引数は、圧縮レベルを制御する0から9までの整数です。 1は最も速く、最小の圧縮を生成し、9は最も遅く、最大の圧縮を生成します。 0は圧縮なしです。 デフォルトは9です。

mtime 引数は、圧縮時にストリームに書き込まれるオプションの数値タイムスタンプです。 すべての gzip 圧縮ストリームには、タイムスタンプが含まれている必要があります。 省略またはNoneの場合、現在の時刻が使用されます。 このモジュールは、解凍時にタイムスタンプを無視します。 ただし、 gunzip などの一部のプログラムはそれを利用します。 タイムスタンプの形式は、time.time()の戻り値およびos.stat()によって返されるオブジェクトのst_mtime属性の形式と同じです。

GzipFile オブジェクトのclose()メソッドを呼び出しても、 fileobj は閉じられません。これは、圧縮されたデータの後にさらに資料を追加したい場合があるためです。 これにより、書き込み用に開いた StringIO オブジェクトを fileobj として渡し、 StringIO オブジェクトの getvalue()[を使用して結果のメモリバッファーを取得することもできます。 X188X]メソッド。

GzipFile は、反復と with ステートメントをサポートします。

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

バージョン2.7で変更:ゼロが埋め込まれたファイルのサポートが追加されました。

バージョン2.7の新機能: mtime 引数。

gzip.open(filename[, mode[, compresslevel]])
これは、GzipFile(filename, mode, compresslevel)の省略形です。 filename 引数は必須です。 モードのデフォルトは'rb'で、圧縮レベルのデフォルトは9です。

12.2.1。 使用例

圧縮ファイルの読み取り方法の例:

import gzip
with gzip.open('file.txt.gz', 'rb') as f:
    file_content = f.read()

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

import gzip
content = "Lots of content here"
with gzip.open('file.txt.gz', 'wb') as f:
    f.write(content)

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

import gzip
import shutil
with open('file.txt', 'rb') as f_in, gzip.open('file.txt.gz', 'wb') as f_out:
    shutil.copyfileobj(f_in, f_out)

も参照してください

モジュール zlib
gzip ファイル形式をサポートするために必要な基本的なデータ圧縮モジュール。