現象
python3.8 にてtomlファイルを読み込む箇所にて
toml.decoder.TomlDecodeError: Found invalid character in key name: '['. Try quoting the key name. (line 1 column 2 char 1)
のエラーが出る。原因は元のファイルをBOMありUTF-8で記述していたため。
解決策
今日時点ではtomlファイルはユニコード(UTF-8)でエンコードするのが仕様であるため、UTF-8にする。
A TOML file must be a valid UTF-8 encoded Unicode document. [ドキュメントの引用元]
エラーメッセージで検索したものの、同じ原因のものが見つからなからなそうだった。 以下のtomlのリポジトリを確認し、読み込みたいファイルのフォーマットが正しいことを確認している最中に仕様の説明を見て解決。
もしも何らかの特別な理由でtomlファイルをutf-8以外で記述している場合は f.read().decode(文字コード名)
として読み込む。例えばBOMありUTF8ならば
import toml with open('example.toml', 'rb') as f: setting = toml.loads(f.read().decode('utf-8-sig'))
などとしてsetting
にtomlファイルの内容を読み込むことができるが、仕様に指定されたように元ファイルをUTF-8にするべき。