結論から
- TOMLは、キーと値を曖昧さなくハッシュテーブルに対応付けるテキスト形式の設定ファイルで、大文字と小文字を区別し、有効なUTF-8での保存が必須です。
- テキストエディターで.tomlファイルを開きます。Windowsでは「開く」から選択し、Macでは標準テキストのモードを使います。スマートフォンではUTF-8テキストを開けるアプリを選んでください。保存時もUTF-8を維持します。表示できるだけでは構文の正しさは確認できません。Pythonではtomllib.load()またはtomllib.loads()で読み込み、不正な文書ではTOMLDecodeErrorが発生します。
- IANAの登録では、TOMLに実行可能な内容は含まれないとされています。ただし、悪意のある入力を解析するとCPUやメモリを大量に消費するおそれがあります。解析前に入力サイズを制限してください。解析成功だけで内容の信頼性が確認できるわけではありません。
TOMLファイルの開き方・編集・変換
TOMLはTom's Obvious, Minimal Languageの略です。基本構文はkey = valueで、文字列、整数、浮動小数点数、真偽値、日時、配列、テーブル、テーブルの配列を扱えます。コメントは#で始まります。登録されたメディアタイプはapplication/toml、拡張子は.tomlです。固定のマジックバイトはありません。
tomllibはTOMLをPythonの辞書に読み込みますが、TOMLの書き出しには対応しません。既存ファイルのスタイルを保って編集する用途には、Python文書がTOML Kitを推奨しています。辞書を経由する変換だけではコメントや書式の保持を保証できません。浮動小数点数には丸めが生じる場合があり、parse_floatでdecimal.Decimalを指定できます。
開き方
テキストエディターで.tomlファイルを開きます。Windowsでは「開く」から選択し、Macでは標準テキストのモードを使います。スマートフォンではUTF-8テキストを開けるアプリを選んでください。保存時もUTF-8を維持します。表示できるだけでは構文の正しさは確認できません。Pythonではtomllib.load()またはtomllib.loads()で読み込み、不正な文書ではTOMLDecodeErrorが発生します。
テキストエディターで.tomlファイルを開きます。Windowsでは「開く」から選択し、Macでは標準テキストのモードを使います。スマートフォンではUTF-8テキストを開けるアプリを選んでください。保存時もUTF-8を維持します。表示できるだけでは構文の正しさは確認できません。Pythonではtomllib.load()またはtomllib.loads()で読み込み、不正な文書ではTOMLDecodeErrorが発生します。
tomllibはTOMLをPythonの辞書に読み込みますが、TOMLの書き出しには対応しません。既存ファイルのスタイルを保って編集する用途には、Python文書がTOML Kitを推奨しています。辞書を経由する変換だけではコメントや書式の保持を保証できません。浮動小数点数には丸めが生じる場合があり、parse_floatでdecimal.Decimalを指定できます。
安全チェック
IANAの登録では、TOMLに実行可能な内容は含まれないとされています。ただし、悪意のある入力を解析するとCPUやメモリを大量に消費するおそれがあります。解析前に入力サイズを制限してください。解析成功だけで内容の信頼性が確認できるわけではありません。
送り主が分からない、拡張子が二重になっている、中身が拡張子と合わない——一つでも当てはまるなら、開く前に確かめてください。
変換するときは
tomllibはTOMLをPythonの辞書に読み込みますが、TOMLの書き出しには対応しません。既存ファイルのスタイルを保って編集する用途には、Python文書がTOML Kitを推奨しています。辞書を経由する変換だけではコメントや書式の保持を保証できません。浮動小数点数には丸めが生じる場合があり、parse_floatでdecimal.Decimalを指定できます。
元ファイルではなくコピーを変換し、変換後に画質・メタデータ・レイアウトを元と見比べてください。
よくある質問
TOMLファイルとは何で、何に使いますか?
設定をテキストで記述するファイルです。key = valueの代入をハッシュテーブルに曖昧さなく対応付けます。大文字と小文字を区別し、有効なUTF-8が必要です。
WindowsでTOMLファイルを開く方法は?
テキストエディターを起動し、「開く」で.tomlファイルを選択します。ファイルが表示されない場合は種類を「すべてのファイル」に切り替えます。変更はUTF-8で保存してください。
MacでTOMLファイルを編集する方法は?
テキストエディターの標準テキストのモードで開きます。key = valueの構文を保ち、拡張子.tomlのUTF-8テキストとして保存してください。
スマートフォンでTOMLファイルを開く方法は?
UTF-8ファイルを開けるテキスト編集アプリで選択します。ファイルへのアクセス方法や編集機能はアプリによって異なります。文字が表示されても、TOML構文が正しいとは限りません。
TOMLファイルの読み込みでTOMLDecodeErrorが出る原因は?
Pythonが不正なTOML文書を検出したときのエラーです。代入、引用符、テーブル宣言、UTF-8を確認してください。Python 3.11で導入されたtomllibはTOML 1.0.0に対応し、Python 3.15でTOML 1.1.0への対応が追加されます。
TOMLにはテキストエディターとPythonパーサーのどちらを使うべきですか?
内容を読んだり直接編集したりする場合はテキストエディターを使います。値を辞書として取得し、不正な構文を検出する場合はtomllibを使います。tomllibには書き出し機能や編集用の書式保持機能はありません。
TOML変換でコメントと書式を保持するには?
辞書に読み込むだけでは元のスタイルの保持を保証できません。Python文書は、スタイルを保って既存ファイルを編集する用途に、読み書き可能なTOML Kitを推奨しています。変換後のコメントと書式を確認してください。
信頼できないTOMLファイルの解析リスクは何ですか?
IANAによるとTOMLに実行可能な内容はありませんが、悪意のある入力は解析時にCPUやメモリを大量に消費する可能性があります。事前に入力サイズを制限してください。一律に安全といえるサイズはここでは示されていません。
TOMLの浮動小数点数の精度は読み込み時に変わりますか?
変わる場合があります。TOMLは少なくともIEEE 754 binary64への対応を推奨しており、有効な十進数字が15桁を超える値は丸められる可能性があります。tomllibではparse_float=decimal.Decimalを指定できます。
PythonでTOMLファイルを読み込む方法は?
バイナリモードで開いたファイルにはtomllib.load()、文字列にはtomllib.loads()を使います。戻り値は辞書です。tomllibはPython 3.11以降の標準ライブラリに含まれ、読み込み専用です。
TOMLの解析に成功すれば設定内容を信頼できますか?
解析成功は、パーサーが文書を受け入れたことを示すだけです。出所、値の正確さ、目的の用途に適しているかどうかまでは確認できません。
関連する形式
参考資料
TOML v1.1.0 官方规范 · TOML 官方项目
application/toml 媒体类型登记 · IANA
tomllib — Parse TOML files · Python 官方文档
Tom's Obvious, Minimal Language · 美国国会图书馆