UTF-8
gzip
Python3

Pythonでテキストファイルを解凍→保存で躓いた


Windows上で、UTF-8のテキストファイルをPythonで解凍→保存

テキストファイル処理の関係で、

解凍→UTF8のままテキストファイルとして保存 という処理が必要になった。

そのとき、結構はまったので備忘録としてメモ。

なお、Windowsの文字コードにやられた感じ。


  • importするモジュール


    • gzip

    • codecs




躓きポイント

gzip.open(filename,mode="rb")と指定、バイナリ形式で読込む。

※デフォルト設定が"rb"なので、gzip.open(filename)だけでもOK

gzip.open(filename,"rt")とテキスト形式で読込むと、エラーが発生し変換できない。

import gzip

import codecs

filename = "utf8.gz"
with gzip.open(filename,mode="rb") as f: ###元ファイルがutf-8なので、バイナリで解凍
newname = filename.replace(".gz",".txt") ###解凍後のファイル名を作成
reader = codecs.getreader("utf-8") ###codecsでutf-8で読込するオブジェクトを作成
contents = reader(f) ### バイナリで開いたファイルオブジェクトをcodecsで読込 StreamReaderオブジェクト
with open(newname,mode="w",encoding="utf-8",newline="\n") as newf: ### 書込ファイルを作成するため、ファイルオブジェクトのnewfを作成
newf.write(contents.read()) ### contentsを一度に読み、書き込む
newf.close()
f.close()