Pythonでgzip圧縮されたファイルからデータを直接読み込む
Pythonで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])
ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは
公開日
広告