gzip – gzip ファイルのサポート¶
On 11月 24, 2021 by adminソースコードです。 Lib/gzip.py
このモジュールは、ちょうど GNU プログラム gzip と gunzip のように、ファイルを圧縮・解凍する簡単なインターフェースを提供します。
データ圧縮は zlib
モジュールによって行われます。gzip
モジュールは GzipFile
クラスと、open()
, compress()
, decompress()
便利関数群を提供します。GzipFile
クラスは gzip 形式のファイルを読み書きし、通常のファイルオブジェクトのように見えるようにデータを自動的に圧縮または伸張する。
gzip や gunzip プログラムで伸張できる追加のファイル形式、例えば compress や pack で生成されるものは、このモジュールではサポートしないことに注意されたい。
このモジュールは以下の項目を定義する:
gzip.
open
(filename, mode=’rb’, compresslevel=9, encoding=None, errors=None, newline=None)¶
gzip で圧縮したファイルをバイナリまたはテキストモードで開き、fileobject を返す。
filename 引数は実際のファイル名 (str
または bytes
オブジェクト) か、読み込みまたは書き込みのための既存のファイルオブジェクトです。
mode 引数は、バイナリモードなら 'r'
, 'rb'
, 'a'
, 'ab'
, 'w'
, 'wb'
, 'x'
または 'xb'
、テキストモードなら 'rt'
, 'at'
, 'wt'
, または 'xt'
から選ぶことができます。 デフォルトは 'rb'
である。
compresslevel 引数は、GzipFile
コンストラクタと同様に 0 から 9 までの整数である。
バイナリモードでは、GzipFile
コンストラクタと等価である。 GzipFile(filename, mode, compresslevel)
.
テキストモードでは、GzipFile
オブジェクトが作成され、指定されたエンコーディング、エラーハンドリング、行末を持つ io.TextIOWrapper
インスタンスにラップされます。
Version 3.3 での変更点: filename がファイルオブジェクトであることのサポート、テキストモードのサポート、エンコーディング、エラーおよび改行の引数を追加しました。
バージョン 3.6 で変更された点: 'x'
, 'xb'
, 'xt'
モードのサポートを追加しました。
exception gzip.
BadGzipFile
¶
無効な gzip ファイルに対して発生する例外です。 OSError
を継承しています。EOFError
と zlib.error
も無効な gzipfiles に対して発生します。
version 3.8 で追加されました。
class gzip.
GzipFile
(filename=None, mode=None, compresslevel=9, fileobj=None, mtime=None)¶
GzipFile
クラスのコンストラクタで、truncate()
メソッドを除いたファイルオブジェクトのほとんどのメソッドをシミュレートしています。
新しいクラスのインスタンスは fileobj に基づいており、通常のファイル、io.BytesIO
オブジェクト、またはファイルをシミュレートする他の任意のオブジェクトにすることができます。
fileobj が None
でない場合、 filename 引数は gzip ファイルヘッダに含まれるためだけに使われ、圧縮されていないファイルのオリジナルのファイル名を含むことができます。
mode 引数は、ファイルが読み込まれるか書き込まれるかに応じて、 'r'
, 'rb'
, 'a'
, 'ab'
, 'w'
, 'wb'
, 'x'
, 'xb'
のいずれかを指定することができる。 それ以外の場合,デフォルトは 'rb'
である。 将来のPythonのリリースでは、fileobjのモードは使用されないでしょう。
ファイルは常にバイナリーモードで開かれることに注意してください。 圧縮されたファイルをテキストモードで開くには、open()
を使用します (または GzipFile
を io.TextIOWrapper
で囲みます)。
引数 compresslevel は 0
〜 9
の整数で、圧縮レベルを制御します。 0
は圧縮しない。 デフォルトは 9
です。
mtime 引数は、圧縮時にストリームの最終修正時刻フィールドに書き込むタイムスタンプ (オプション) で、数値で指定します。 これは、圧縮モードでのみ提供されるべきである。 省略された場合、または None
の場合、現在の時刻が使用されます。 詳細は mtime
属性を参照してください。
GzipFile
オブジェクトの close()
メソッドを呼び出しても、fileobj は閉じません。 また、書き込み用にオープンした io.BytesIO
オブジェクトを fileobj として渡し、io.BytesIO
オブジェクトの getvalue()
メソッドを使用して結果のメモリバッファを取得することも可能です。
GzipFile
は以下のメソッドと属性も提供している:
peek
(n)¶
ファイル位置を進めずに圧縮されていない n バイトを読み込む。
注意
peek()
を呼び出してもGzipFile
のファイル位置は変わりませんが、基本となるファイルオブジェクトの位置は変わるかもしれません (例: GzipFile
のファイル位置は、peek()
の呼び出しによって変更されました)。
New in version 3.2.
mtime
¶
伸長するとき、最も最近読んだヘッダーの最終修正時間フィールドの値は、この属性から整数として読み取られるかもしれません。 ヘッダを読み込む前の初期値は None
です。
すべての gzip 圧縮ストリームは、タイムスタンプフィールドを含むことが要求されます。 gunzip のようないくつかのプログラムでは、タイムスタンプを利用する。
バージョン 3.1 での変更点: with
文のサポートが追加され、time コンストラクタ引数と mtime
属性も追加されました。
Changed in version 3.2: ゼロパッドおよび非シーク可能ファイルのサポートが追加されました。
Changed in version 3.3: io.BufferedIOBase.read1()
メソッドが実装されました。
Changed in version 3.5: 任意のbytes-likeオブジェクトの書き込みをサポートしました。read()
メソッドはNone
の引数を受け取るようになりました。
Deprecated since version 3.9: GzipFile
を modeargument を指定せずに書き込むことは非推奨。
gzip.
compress
(data, compresslevel=9, *, mtime=None)¶
データを圧縮して bytes
オブジェクトに圧縮データを格納して返します。 compresslevel と mtime は上記の GzipFile
コンストラクタと同じ意味です。
New in version 3.2.
Change in version 3.8.
Change in version 3.8.
New in version 3.2.
New for details: gzip.
decompress
(data)¶
データを解凍し、解凍されたデータを含む bytes
オブジェクトを返します。
3.2 で新規に追加。
使用例¶
圧縮ファイルの読み方例:
import gzipwith gzip.open('/home/joe/file.txt.gz', 'rb') as f: file_content = f.read()
圧縮GZIPファイルの作成方法例:
import gzipcontent = b"Lots of content here"with gzip.open('/home/joe/file.txt.gz', 'wb') as f: f.write(content)
既存のファイルをGZIP圧縮する例:
圧縮ファイルを作成するにはどうするか?
import gzipimport shutilwith open('/home/joe/file.txt', 'rb') as f_in: with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out: shutil.copyfileobj(f_in, f_out)
バイナリ文字列を GZIP 圧縮する例:
import gzips_in = b"Lots of content here"s_out = gzip.compress(s_in)
See also
モジュール zlib
gzip fileformat に必要な基本データ圧縮モジュールです。
Command Line Interface¶
gzip
モジュールは ordecompress ファイルの圧縮のための簡単なコマンドラインインターフェイスを提供します。
一度実行されると gzip
モジュールは入力ファイル (複数) を保持します。
バージョン 3.8 で変更。
Command line options¶
file
¶
ファイルが指定されない場合、sys.stdin
から読み込みます。
--fast
¶
最速圧縮方法(少ない圧縮)を表示します。
--best
¶
最も遅い圧縮方法(最高圧縮)を示します。
-d
,
--decompress
¶
与えられたファイルを解凍します。
-h
,
--help
¶
ヘルプメッセージを表示する。
コメントを残す