Pythonでgzip圧縮されたファイルからデータを直接読み込む

Pythonでgzipで圧縮されたファイルを直接読んでみます。

目次

  1. gzipモジュール
  2. gzip圧縮されたファイルからテキストを読み出す例

gzipモジュール

拡張子がtar.gzなファイルは tarモジュール を使ってアクセスします。

拡張子がgzなだけの圧縮ファイルの場合は、展開してからアクセスしなくてもgzipモジュールで直接アクセスできます。

gzip.open(filename, [mode], [compresslevel], [encoding], [errors], [newline])
変数 内容
filename str ファイル名またはファイルオブジェクト。
mode str 省略可。既定値はrb。ファイルを開くモード。
compresslevel int 省略可。既定値は9。
encoding str 省略可。既定値はNone。エンコードモード。
errors   省略可。既定値はNone。
newline   省略可。既定値はNone。

ファイルオブジェクトを返すメソッドです。

バイナリーモードとテキストモードがあります。読み込みはr、書き込みはw、バイナリーモードはb、テキストモードはtの文字を組み合わせてmodeに指定します。

compresslevelなどは、読み込みでは指定不要です。

gzip圧縮されたファイルからテキストを読み出す例

試してみましょう。

このような内容のテキストファイルを作成して、test.txtというファイル名で保存します。

難波津に咲くやこの花冬ごもり今は春べと咲くやこの花
ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは
瀬をはやみ岩にせかるる滝川のわれても末に逢はむとぞ思ふ
憂かりける人を初瀬の山おろしよ激しかれとは祈らぬものを
もろともにあはれと思え山桜花よりほかに知る人もなし

これをgzipで圧縮します。

$ gzip test.txt

できあがったtest.txt.gzをPythonで読み込んで、2行目を取り出してみます。

import gzip

with gzip.open('test.txt.gz', mode='rt', encoding='utf-8') as f:
    data = f.read()

print(data.split('\n')[1])
ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは

広告

Pythonのファイル入出力カテゴリの投稿