Python
 Computer >> コンピューター >  >> プログラミング >> Python

gzipファイルのPythonサポート(gzip)


GZipアプリケーションは、ファイルの圧縮と解凍に使用されます。これはGNUプロジェクトの一部です。 Pythonのgzipモジュールは、GZipアプリケーションへのインターフェースです。 gzipデータ圧縮アルゴリズム自体はzlibモジュールに基づいています。

gzipモジュールには、GzipFileクラスの定義とそのメソッドが含まれています。また、便利な関数open()、compress()、decompress()も含まれています。

圧縮と解凍を実現する最も簡単な方法は、上記の関数を使用することです。

open()

この関数は、gzipで圧縮されたファイルをバイナリモードまたはテキストモードで開き、オブジェクトのようなファイルを返します。これは、物理ファイル、文字列、またはバイトオブジェクトの場合があります。デフォルトでは、ファイルは「rb」モードで開かれます。つまり、バイナリデータを読み取りますが、この関数のモードパラメータは、以下に示す他のモードを取ることができます。

binary mode: 'r', 'rb', 'a', 'ab', 'w', 'wb', 'x', 'xb'
text mode : 'rt', 'at', 'wt', or 'xt'

この関数は、許容値が0〜9の圧縮レベルも定義します。ファイルをテキストモードで開くと、GzipFileオブジェクトはTextIOWrapperオブジェクトにラップされます。

compress()

この関数は、引数として指定されたデータに圧縮を適用し、圧縮されたバイトオブジェクトを返します。デフォルトの圧縮レベルは9です。

decompress()

この関数はバイトオブジェクトを解凍し、非圧縮データを返します。

次の例では、圧縮データを書き込んでgzipファイルを作成します。

>>> import gzip
>>> data = b'Python - Batteries included'
>>> with gzip.open("test.txt.gz", "wb") as f:
f.write(data)

これにより、現在のディレクトリに「test.txt.gz」ファイルが作成されます。このgzipアーカイブには、解凍ユーティリティを使用して確認できる「test.txt」が含まれています。

この圧縮ファイルをプログラムで読み取るには

>>> with gzip.open("test.txt.gz", "rb") as f:
data = f.read()
>>> data
b'Python - Batteries included'

既存のファイルをgzipアーカイブに圧縮するには、その中のテキストを読み取り、バイト配列に変換します。次に、このbytearrayオブジェクトはgzipファイルに書き込まれます。以下の例では、「zen.txt」ファイルが現在のディレクトリに存在すると想定されています。

fp = open("zen.txt","rb")
>>> data = fp.read()
>>> bindata = bytearray(data)
>>> with gzip.open("zen.txt.gz", "wb") as f:
f.write(bindata)

gzipアーカイブから非圧縮ファイルを取得するには

>>> fp = open("zen1.txt", "wb")
>>> with gzip.open("zen.txt.gz", "rb") as f:
bindata = f.read()
>>> fp.write(bindata)
>>> fp.close()

上記のコードは、「zen.txt」と同じデータを含む「zen1.txt」を現在のディレクトリに作成します

これらの便利な関数に加えて、gzipモジュールにはcompress()メソッドとdecompress()メソッドを定義するGzipFileクラスもあります。このクラスのコンストラクターは、ファイル、モード、および圧縮レベルの引数を、上記とまったく同じ意味で受け取ります。

モードパラメータが「w」または「wb」または「wt」として指定されている場合、GipFileオブジェクトは指定されたデータを圧縮してgzipファイルに書き込むためのwrite()メソッドを提供します。

>>> f = gzip.GzipFile("testnew.txt.gz","wb")
>>> data = b'Python - Batteries included'
>>> f.write(data)
>>> f.close()

これにより、testnew.txt.gzファイルが作成されます。任意のユーティリティを使用して解凍し、「Python –バッテリーが含まれています」というテキストを含むtestnew.txtが含まれていることを確認できます。

GzipFileオブジェクトを使用してgzipファイルを解凍するには、「rb」値を使用してファイルを作成し、パラメータを設定し、read()メソッドで解凍されたデータを読み取ります

>>> f = gzip.GzipFile("testnew.txt.gz","rb")
>>> data = f.read()
>>> data
b'Python - Batteries included'

この記事では、Pythonのgzipモジュールでgzipライブラリを実装する方法を学びました。


  1. Pythonで国勢調査データを分析する

    国勢調査とは、特定の人口に関する情報を体系的に記録することです。キャプチャされたデータには、人口統計、経済、居住の詳細など、さまざまなカテゴリの情報が含まれます。これは、最終的に政府が現在のシナリオと将来の計画を理解するのに役立ちます。この記事では、Pythonを活用してインドの人口の人口調査データを分析する方法を説明します。さまざまな人口統計学的および経済的側面を見ていきます。次に、分析をグラフィカルに投影する電荷をプロットします。 kaggleから収集されたソース。ここにあります。 データの整理 以下のプログラムでは、最初に短いPythonプログラムを使用してデータを取得します。さらに分

  2. クイックソート用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、クイックソートの概念を使用して配列を並べ替える必要があります ここでは、最初に配列をパーティション化し、別のパーティションを並べ替えて、並べ替えられた配列を取得します。 次に、以下の実装のソリューションを見てみましょう- 例 # divide function def partition(arr,low,high):    i = ( low-1 )    pivot = arr[high] # pivot element   &nb