すでに作ってある設定ファイルをWindowsのメモ帳で編集したら、その後ファイルが開けなくなりました。破損したかと思ったのですが、何回やっても同じでした...。
理由
utf-8にはBOM(Byte Order Mark)有りと無しの2種類があるようです。
Windows 10 では May2019Update(1903)でメモ帳のデフォルトがUTF-8 BOM無しになりましたが、これ以前のバージョンではBOM有りで保存され変更できません。
(動作確認のためにたまに使う環境だったのでUpdateしていない環境でした)
対応方法
エンコード「utf-8-sig」を使うと良いようです。
ファイルを開く
f = open(path,'r', encoding='utf-8-sig')
ConfigParserを使う
config = configparser.ConfigParser()
config.read(conf,"utf-8-sig")
utf-8-sigはBOM有りも無しも両方きちんとハンドリングできるようですので、Windowsでファイル編集を考慮する必要がある場合は、utf-8-sigを使うと良いでしょう。
参考
- Python Tips: Python で UTF-8 の BOM ありなしを見分けたい
- メモ帳のデフォルト保存がUTF-8 BOMなしになった(Windows 10 May 2019 Update 1903)
むにゃむにゃ
普段Mac使いなのであまり気にしていなかったので、びっくりしました。