Windows上で、UTF-8のテキストファイルをPythonで解凍→保存
テキストファイル処理の関係で、
解凍→UTF8のままテキストファイルとして保存 という処理が必要になった。
そのとき、結構はまったので備忘録としてメモ。
なお、Windowsの文字コードにやられた感じ。
- importするモジュール
- gzip
- codecs
躓きポイント
gzip.open(filename,mode="rb")と指定、バイナリ形式で読込む。
※デフォルト設定が"rb"なので、gzip.open(filename)だけでもOK
gzip.open(filename,"rt")とテキスト形式で読込むと、エラーが発生し変換できない。
sample.py
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を一度に読み、書き込む