めも

メモ.

【エラー解決】python3.8でtomlファイルを読み込み時に toml.decoder.TomlDecodeError

現象

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にするべき。

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。