tomllib — 解析TOML檔案

在 3.11 版本中新增。

原始碼: Lib/tomllib


本模組提供了用於解析TOML 1.0.0(Tom's Obvious Minimal Language,https://toml.io)的介面。本模組不支援寫入TOML。

參見

Tomli-W 包是一個TOML寫入器,可以與本模組結合使用,提供了一個熟悉標準庫marshalpickle模組使用者的寫入API。

參見

TOML Kit 包是一個保留樣式的TOML庫,同時具有讀寫功能。對於編輯現有TOML檔案,建議將其替代本模組。

該模組定義了以下函式:

tomllib.load(fp, /, *, parse_float=float)

讀取TOML檔案。第一個引數應該是一個可讀的二進位制檔案物件。返回一個dict。使用此轉換表將TOML型別轉換為Python。

對於要解碼的每個TOML浮點數的字串,將呼叫parse_float。預設情況下,這等同於float(num_str)。這可以用於為TOML浮點數使用其他資料型別或解析器(例如decimal.Decimal)。可呼叫物件不得返回dictlist,否則會引發ValueError

如果TOML文件無效,將引發TOMLDecodeError

tomllib.loads(s, /, *, parse_float=float)

str物件載入TOML。返回一個dict。使用此轉換表將TOML型別轉換為Python。parse_float引數的含義與load()中相同。

如果TOML文件無效,將引發TOMLDecodeError

以下異常可用

exception tomllib.TOMLDecodeError(msg, doc, pos)

ValueError的子類,具有以下附加屬性

msg

未格式化的錯誤訊息。

doc

正在解析的TOML文件。

pos

文件中解析失敗的索引。

lineno

pos對應的行號。

colno

pos對應的列號。

3.14 版本中的變化: 添加了msgdocpos引數。添加了msgdocposlinenocolno屬性。

3.14 版本後已廢棄: 傳遞自由形式的位置引數已廢棄。

示例

解析TOML檔案

import tomllib

with open("pyproject.toml", "rb") as f:
    data = tomllib.load(f)

解析TOML字串

import tomllib

toml_str = """
python-version = "3.11.0"
python-implementation = "CPython"
"""

data = tomllib.loads(toml_str)

轉換表

TOML

Python

TOML 文件

dict

string

str

整數

int

浮點數

浮點數(可透過parse_float配置)

boolean

bool

帶偏移量的日期時間

datetime.datetime(tzinfo屬性設定為datetime.timezone的例項)

本地日期時間

datetime.datetime(tzinfo屬性設定為None

本地日期

datetime.date

本地時間

datetime.time

array

list

dict

內聯表

dict

表陣列

字典列表