Python讀寫(xiě)TOML文件的示例代碼
TOML 文件表示(Tom's Obvious,最小語(yǔ)言)。配置文件可以存儲(chǔ)在TOML 文件中,其擴(kuò)展名為 .toml。由于其語(yǔ)義簡(jiǎn)單,力求“最小化”,因此它應(yīng)該易于閱讀和編寫(xiě)。它還可以清楚地映射到字典。TOML 的語(yǔ)法主要由鍵=值對(duì)組成。這使得 TOML 旨在易于人們閱讀和創(chuàng)建,同時(shí)又易于計(jì)算機(jī)解析。此外,TOML 還可用作其他配置文件格式(例如JSON 和 YAML)的替代方案。
所需模塊:
通過(guò)在終端或命令提示符中執(zhí)行以下命令,我們可以使用 PIP 來(lái)安裝軟件包。
pip install toml
TOML 文件格式
鍵/值對(duì)、節(jié)/表和注釋構(gòu)成了 TOML 文件的大部分,這些文件也需要是有效的 UTF-8 編碼的 Unicode 文檔。TOML 支持以下數(shù)據(jù)類型:字符串、整數(shù)、浮點(diǎn)型、布爾型、日期時(shí)間、數(shù)組和表(哈希表/字典)。TOML 是區(qū)分大小寫(xiě)的語(yǔ)言。以下是 TOML 文件語(yǔ)法的簡(jiǎn)要概述:
- 注釋以 # 字符開(kāi)始,一直到行尾。
- 鍵值對(duì)表示為key = value并用換行符分隔。
- 可以使用方括號(hào)嵌套鍵以創(chuàng)建節(jié)的層次結(jié)構(gòu),例如 [section1.subsection1] 。
- 值可以是字符串(在引號(hào)中)、整數(shù)、浮點(diǎn)數(shù)、布爾值、日期/時(shí)間(采用 ISO 8601 格式)、數(shù)組(在方括號(hào)中)或表格(在花括號(hào)中)。
- 數(shù)組可以包含任何類型的值,包括其他數(shù)組或表。
- 表表示一組鍵值對(duì),可用于將相關(guān)的配置設(shè)置分組在一起。表可以有自己的部分,并且可以嵌套在其他表中。
- 空白(空格、制表符和換行符)在 TOML 文件中很重要,應(yīng)一致使用以確保正確解析文件。
TOML 模塊的用例
- 配置文件:TOML 通常用作 Python 應(yīng)用程序的配置文件格式。toml模塊可用于解析這些配置文件并將配置數(shù)據(jù)加載到應(yīng)用程序中。
- 數(shù)據(jù)序列化:TOML可用于序列化和反序列化Python數(shù)據(jù)結(jié)構(gòu)。toml模塊提供了將 Python 字典與 TOML 數(shù)據(jù)相互轉(zhuǎn)換的方法。
- 互操作性:TOML是一種跨語(yǔ)言格式,這意味著TOML數(shù)據(jù)可以在不同的編程語(yǔ)言之間輕松共享。toml模塊可用于將 Python 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為 TOML,然后可以輕松地與其他語(yǔ)言共享。
- 測(cè)試: TOML可以用作測(cè)試夾具格式,允許開(kāi)發(fā)人員以TOML格式編寫(xiě)測(cè)試用例,并使用toml模塊在Python中加載和運(yùn)行測(cè)試用例。
目錄結(jié)構(gòu):

創(chuàng)建 TOML 文件
創(chuàng)建一個(gè) TOML 文件,復(fù)制粘貼以下文本,然后使用擴(kuò)展名 .toml 保存
[server] host = "localhost" port = 8080 ssl = false [database] url = "mongodb://localhost:27017" name = "mydb" username = "myuser" password = "mypassword" level = "info"
使用Python讀取TOML文件
toml.load() 方法讀取 TOML 文件的內(nèi)容并將解析后的數(shù)據(jù)作為 Python 字典返回。湯姆 . dumps() 方法將數(shù)據(jù)序列化回 TOML 格式并將其作為字符串返回。最后,使用print() 方法將序列化的 TOML 數(shù)據(jù)打印到控制臺(tái)。此代碼可用于讀取和修改存儲(chǔ)在 TOML 文件中的配置數(shù)據(jù),然后使用 toml.dump () 方法將修改后的數(shù)據(jù)保存回文件中。
app.py
import toml
with open('config.toml', 'r') as f:
config = toml.load(f)
# 從配置訪問(wèn)值
print(config['server']['host'])
print(config['server']['port'])
print(config['database']['username'])輸出:

使用 Python 寫(xiě)入 TOML 文件
然后使用toml.load() 方法將文件的內(nèi)容解析到名為 config的字典中。然后,代碼通過(guò)在 'database' 鍵下添加新的鍵值對(duì)來(lái)修改 config 字典中的特定值。新的鍵為 'level2' ,值為'新添加的信息' 。最后,使用toml.dump()方法將修改后的 config字典寫(xiě)回到config.toml文件中,該方法將字典轉(zhuǎn)換為T(mén)OML格式并寫(xiě)入到文件中。文件以寫(xiě)模式打開(kāi),with語(yǔ)句確保寫(xiě)入后正確關(guān)閉。
輸出:
再次檢查 config.toml 文件
[server] host = "localhost" port = 8080 ssl = false [database] url = "mongodb://localhost:27017" name = "mydb" username = "myuser" password = "mypassword" level = "info" level2 = "new added information"
使用Python修改TOML文件
代碼首先導(dǎo)入 toml 庫(kù),該庫(kù)提供了加載和轉(zhuǎn)儲(chǔ) TOML 文件的功能,使用 open () 函數(shù)打開(kāi)名為 config.toml 的 TOML 配置文件。該文件以讀取模式('r')打開(kāi),并使用 toml.load() 函數(shù)將其內(nèi)容加載到 Python 字典中。生成的字典稱為 config,包含 TOML 文件中的配置數(shù)據(jù)。然后,代碼通過(guò)將數(shù)據(jù)庫(kù)部分中的級(jí)別值更改為“信息”來(lái)修改配置字典中的值。
最后將修改后的config字典寫(xiě)回到 config.toml 中再次使用 open() 函數(shù)打開(kāi)文件,這次處于寫(xiě)入模式('w')。使用 toml.dump() 函數(shù)將修改后的字典寫(xiě)入文件,該函數(shù)將字典轉(zhuǎn)換為 TOML 格式的字符串并將其寫(xiě)入文件。
app.py
import toml
# 加載TOML文件
with open('config.toml', 'r') as f:
config = toml.load(f)
# 修改配置中的值
config['database']['level'] = 'information'
# 將修改后的配置寫(xiě)回文件
with open('config.toml', 'w') as f:
toml.dump(config, f)輸出:
再次檢查 config.toml 文件以查看更改:
[server] host = "localhost" port = 8080 ssl = false [database] url = "mongodb://localhost:27017" name = "mydb" username = "myuser" password = "mypassword" level = "information"
JSON 和 TOML 文件之間的區(qū)別
Toml 和 JSON 都可以有效地表示結(jié)構(gòu)化數(shù)據(jù),但是它們?cè)跀?shù)據(jù)類型、靈活性和語(yǔ)法方面有所不同。選擇的格式取決于您項(xiàng)目的具體需求以及您正在使用的工具和庫(kù)。
- 語(yǔ)法:JSON 使用基于 JavaScript 對(duì)象表示法的語(yǔ)法,而 TOML 使用更易于理解的語(yǔ)法,更接近配置文件。
- 注釋:TOML 支持注釋,而 JSON 不支持。
- 數(shù)據(jù) 類型:JSON 支持一組有限的數(shù)據(jù)類型,包括字符串、數(shù)字、布爾值、數(shù)組和對(duì)象。另一方面,TOML 支持更廣泛的數(shù)據(jù)類型,包括日期、時(shí)間和表格。
- 使用 案例:JSON 廣泛用于 Web 應(yīng)用程序、API 和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換。TOML 通常用于配置文件,例如流行的靜態(tài)站點(diǎn)生成器 Hugo。
例子:
| JSON | TOML |
|---|---|
| { “employee”: { “name”: “John Doe”, “age”: 35, “gender”: “male”, “address”: “123 Main St, Anytown USA”, “hobbies”: [“reading”, “cooking”, “hiking”], “skills”: { “programming_languages”: [“Python”, “Java”, “C++”], “databases”: [“MySQL”, “PostgreSQL”, “MongoDB”] } } } | [employee] name = “John Doe” age = 35 gender = “male” address = “123 Main St, Anytown USA” hobbies = [“reading”, “cooking”, “hiking”][employee.skills] programming_languages = [“Python”, “Java”, “C++”] databases = [“MySQL”, “PostgreSQL”, “MongoDB”] |

到此這篇關(guān)于Python讀寫(xiě)TOML文件的示例代碼的文章就介紹到這了,更多相關(guān)Python讀寫(xiě)TOML文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)python Tkinter Text的用法詳解
今天小編就為大家分享一篇對(duì)python Tkinter Text的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Pandas中g(shù)roupby+agg的兩種寫(xiě)法區(qū)別小結(jié)
Pandas中g(shù)roupby+agg操作存在兩種常見(jiàn)寫(xiě)法,第一種會(huì)將分組字段轉(zhuǎn)為MultiIndex,導(dǎo)致后續(xù)處理困難,第二種通過(guò)as_index=False保持分組字段為普通列,更適用于工程場(chǎng)景,兩種寫(xiě)法核心區(qū)別在于索引類型、列名控制和擴(kuò)展性,下面就來(lái)詳細(xì)的介紹一下2026-01-01
Python使用cx_Oracle庫(kù)連接Oracle數(shù)據(jù)庫(kù)指南
這篇文章主要為大家介紹了Python使用cx_Oracle庫(kù)連接Oracle數(shù)據(jù)庫(kù)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片)
今天小編就為大家分享一篇python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08

