tomllib【設定ファイル (TOML形式)】3.11
メモ ( 関連 外部リンク ) 関数構文 例
メモ
概要
- 設定ファイル (TOML形式)の操作
- TOML (Tom's Obvious Minimal Language) 形式の詳細は 外部リンク 参照
- 書き込みは未サポート
関数・例外クラス
関連
外部リンク
関数構文
load【読み込み (ファイル)】
loads【読み込み (文字列)】
load(fp, /, *, parse_float=float)
loads(s, /, *, parse_float=float)
戻り値 (dict)設定ファイルの展開辞書 (TOML形式 と Python形式 の対応は下記参照)
fpバイナリファイル オブジェクト
s (str)TOML形式の文字列
parse_floatTOML float形式の解析関数 (引数:文字列)
TOMLDecodeError 例外無効な TOML ドキュメント
TOML形式 | Python形式 | 備考 |
---|---|---|
table【テーブル型】 | dict【辞書型】 | |
string【文字列型】 | str【文字列型】 | |
integer【整数型】 | int【整数型】 | |
float【浮動小数点数型】 | float【浮動小数点数型】(デフォルト) | parse_floatで変更可 |
boolean【ブール型】(true / false) | bool【ブール型】(True / False) | |
offset date-time【オフセット付き日時型】 | datetime.datetime【日時型】 | タイムゾーン指定 |
local date-time【ローカル日時型】 | datetime.datetime【日時型】 | タイムゾーンなし |
local date【ローカル日付型】 | datetime.date【日付型】 | |
local time【ローカル時刻型】 | datetime.time【時刻型】 | |
array【配列型】 | list【リスト型】 |
例
例:load【読み込み (ファイル)】
####################
# test-simple.toml
####################
key-string = "STRING"
key-integer = 123
key-float = 123.456
key-boolean-true = true
key-boolean-false = false
key-datetime-offset = 2001-02-03 04:05:06+09:00
key-datetime = 2001-02-03 04:05:06
key-date = 2001-02-03
key-time = 04:05:06
key-array = ["STRING", 123, 123.456, true]
import tomllib
def convert(str_float):
value = '[' + str_float + ']'
return value
FILE_TOML = 'test-simple.toml'
with open(FILE_TOML, 'rb') as f:
dic = tomllib.load(f)
for key, value in dic.items():
print(key, value, type(value))
# 出力:
# key-string STRING <class 'str'>
# key-integer 123 <class 'int'>
# key-float 123.456 <class 'float'>
# key-boolean-true True <class 'bool'>
# key-boolean-false False <class 'bool'>
# key-datetime-offset 2001-02-03 04:05:06+09:00 <class 'datetime.datetime'>
# key-datetime 2001-02-03 04:05:06 <class 'datetime.datetime'>
# key-date 2001-02-03 <class 'datetime.date'>
# key-time 04:05:06 <class 'datetime.time'>
# key-array ['STRING', 123, 123.456, True] <class 'list'>
with open(FILE_TOML, 'rb') as f:
dic = tomllib.load(f, parse_float=str)
for key, value in dic.items():
print(key, value, type(value))
# 出力:
# key-string STRING <class 'str'>
# key-integer 123 <class 'int'>
# key-float 123.456 <class 'str'>
# key-boolean-true True <class 'bool'>
# key-boolean-false False <class 'bool'>
# key-datetime-offset 2001-02-03 04:05:06+09:00 <class 'datetime.datetime'>
# key-datetime 2001-02-03 04:05:06 <class 'datetime.datetime'>
# key-date 2001-02-03 <class 'datetime.date'>
# key-time 04:05:06 <class 'datetime.time'>
# key-array ['STRING', 123, '123.456', True] <class 'list'>
with open(FILE_TOML, 'rb') as f:
dic = tomllib.load(f, parse_float=convert)
for key, value in dic.items():
print(key, value, type(value))
# 出力:
# key-string STRING <class 'str'>
# key-integer 123 <class 'int'>
# key-float [123.456] <class 'str'>
# key-boolean-true True <class 'bool'>
# key-boolean-false False <class 'bool'>
# key-datetime-offset 2001-02-03 04:05:06+09:00 <class 'datetime.datetime'>
# key-datetime 2001-02-03 04:05:06 <class 'datetime.datetime'>
# key-date 2001-02-03 <class 'datetime.date'>
# key-time 04:05:06 <class 'datetime.time'>
# key-array ['STRING', 123, '[123.456]', True] <class 'list'>
例:loads【読み込み (文字列)】
import tomllib
toml_str = '''
key-string = "String"
key-integer = 1234
key-float = 1234.5678
key-boolean-true = true
key-boolean-false = false
key-datetime-offset = 2012-03-04 05:06:07+09:00
key-datetime = 2012-03-04 05:06:07
key-date = 2012-03-04
key-time = 05:06:07
key-array = ["String", 1234, 1234.5678, true]
'''
dic = tomllib.loads(toml_str)
for key, value in dic.items():
print(key, value, type(value))
# 出力:
# key-string String <class 'str'>
# key-integer 1234 <class 'int'>
# key-float 1234.5678 <class 'float'>
# key-boolean-true True <class 'bool'>
# key-boolean-false False <class 'bool'>
# key-datetime-offset 2012-03-04 05:06:07+09:00 <class 'datetime.datetime'>
# key-datetime 2012-03-04 05:06:07 <class 'datetime.datetime'>
# key-date 2012-03-04 <class 'datetime.date'>
# key-time 05:06:07 <class 'datetime.time'>
# key-array ['String', 1234, 1234.5678, True] <class 'list'>
dic = tomllib.loads(toml_str, parse_float=str)
for key, value in dic.items():
print(key, value, type(value))
# 出力:
# key-string String <class 'str'>
# key-integer 1234 <class 'int'>
# key-float 1234.5678 <class 'str'>
# key-boolean-true True <class 'bool'>
# key-boolean-false False <class 'bool'>
# key-datetime-offset 2012-03-04 05:06:07+09:00 <class 'datetime.datetime'>
# key-datetime 2012-03-04 05:06:07 <class 'datetime.datetime'>
# key-date 2012-03-04 <class 'datetime.date'>
# key-time 05:06:07 <class 'datetime.time'>
# key-array ['String', 1234, '1234.5678', True] <class 'list'>
例:各種データ
####################
# test.toml
####################
key-string = "STRING"
key-integer = 123
key-float = 123.456
key-boolean-true = true
key-boolean-false = false
key-datetime-offset = 2001-02-03 04:05:06+09:00
key-datetime = 2001-02-03 04:05:06
key-date = 2001-02-03
key-time = 04:05:06
key-array = ["STRING", 123, 123.456, true]
# ドット付きキー
KEY.key-1 = "VALUE-1"
KEY.key-2 = "VALUE-2"
# インライン・テーブル
inline-table = { key-1 = "V-1", key-2 = "V-2" }
# テーブル
[table-A]
key-1 = "V-A-1"
key-2 = "V-A-2"
[table-B]
key-1 = "V-B-1"
key-2 = "V-B-2"
# ドット付きテーブル
[TABLE.table-C]
key-1 = "V-C-1"
key-2 = "V-C-2"
# テーブルの配列
[[table-D]]
key-1 = "V-1-1"
key-2 = "V-2-1"
[[table-D]]
[[table-D]]
key-1 = "V-1-3"
key-2 = "V-2-3"
key-3 = "V-3-3"
import tomllib
with open('test.toml', 'rb') as f:
dic = tomllib.load(f)
for key, value in dic.items():
print(key, value, type(value))
# 出力:
# key-string STRING <class 'str'>
# key-integer 123 <class 'int'>
# key-float 123.456 <class 'float'>
# key-boolean-true True <class 'bool'>
# key-boolean-false False <class 'bool'>
# key-datetime-offset 2001-02-03 04:05:06+09:00 <class 'datetime.datetime'>
# key-datetime 2001-02-03 04:05:06 <class 'datetime.datetime'>
# key-date 2001-02-03 <class 'datetime.date'>
# key-time 04:05:06 <class 'datetime.time'>
# key-array ['STRING', 123, 123.456, True] <class 'list'>
# KEY {'key-1': 'VALUE-1', 'key-2': 'VALUE-2'} <class 'dict'>
# inline-table {'key-1': 'V-1', 'key-2': 'V-2'} <class 'dict'>
# table-A {'key-1': 'V-A-1', 'key-2': 'V-A-2'} <class 'dict'>
# table-B {'key-1': 'V-B-1', 'key-2': 'V-B-2'} <class 'dict'>
# TABLE {'table-C': {'key-1': 'V-C-1', 'key-2': 'V-C-2'}} <class 'dict'>
# table-D [{'key-1': 'V-1-1', 'key-2': 'V-2-1'}, {}, {'key-1': 'V-1-3', 'key-2': 'V-2-3', 'key-3': 'V-3-3'}] <class 'list'>