pathlib read_text()の日本語ファイルのエンコードエラーを解決
長らくos.pathを使っていたのですが最近pathlibに移行しました。
まだ使い慣れていませんが、pathlibはかなり楽でびっくりしました!
そんなわけで、今回はpathlibのread_text()でunicodeを含むファイルの読み込み時に遭遇したエラーの解決手順を記載します。
私はjsonファイルの読み込みで遭遇しましたが、txtファイルやcsvファイルの読み込みでも同様の問題に遭遇すると思います。
余談ですが、pythonで多言語対応したスクリプト向けにConfigファイルの設定値に従い文字列を表示するリポジトリを公開しました。
github.com
環境
OS:Windows10
Python:3.6.8
エラー内容
from pathlib import Path file_path = Path("tset.json") data = file_path.read_text() File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\pathlib.py", line 1197, in read_text return f.read() UnicodeDecodeError: 'cp932' codec can't decode byte 0x86 in position 20: illegal multibyte sequence
解決策
read_textの引数であるencodingに"utf-8"を設定します。
from pathlib import Path file_path = Path("tset.json") data = file_path.read_text(encoding="utf-8"))
これでエラーが発生せず、日本語が読めるようになりました。