Python讀寫TOML文件的示例代碼
TOML 文件表示(Tom's Obvious,最小語言)。配置文件可以存儲在TOML 文件中,其擴展名為 .toml。由于其語義簡單,力求“最小化”,因此它應(yīng)該易于閱讀和編寫。它還可以清楚地映射到字典。TOML 的語法主要由鍵=值對組成。這使得 TOML 旨在易于人們閱讀和創(chuàng)建,同時又易于計算機解析。此外,TOML 還可用作其他配置文件格式(例如JSON 和 YAML)的替代方案。
所需模塊:
通過在終端或命令提示符中執(zhí)行以下命令,我們可以使用 PIP 來安裝軟件包。
pip install toml
TOML 文件格式
鍵/值對、節(jié)/表和注釋構(gòu)成了 TOML 文件的大部分,這些文件也需要是有效的 UTF-8 編碼的 Unicode 文檔。TOML 支持以下數(shù)據(jù)類型:字符串、整數(shù)、浮點型、布爾型、日期時間、數(shù)組和表(哈希表/字典)。TOML 是區(qū)分大小寫的語言。以下是 TOML 文件語法的簡要概述:
- 注釋以 # 字符開始,一直到行尾。
- 鍵值對表示為key = value并用換行符分隔。
- 可以使用方括號嵌套鍵以創(chuàng)建節(jié)的層次結(jié)構(gòu),例如 [section1.subsection1] 。
- 值可以是字符串(在引號中)、整數(shù)、浮點數(shù)、布爾值、日期/時間(采用 ISO 8601 格式)、數(shù)組(在方括號中)或表格(在花括號中)。
- 數(shù)組可以包含任何類型的值,包括其他數(shù)組或表。
- 表表示一組鍵值對,可用于將相關(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是一種跨語言格式,這意味著TOML數(shù)據(jù)可以在不同的編程語言之間輕松共享。toml模塊可用于將 Python 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為 TOML,然后可以輕松地與其他語言共享。
- 測試: TOML可以用作測試夾具格式,允許開發(fā)人員以TOML格式編寫測試用例,并使用toml模塊在Python中加載和運行測試用例。
目錄結(jié)構(gòu):
創(chuàng)建 TOML 文件
創(chuàng)建一個 TOML 文件,復(fù)制粘貼以下文本,然后使用擴展名 .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ù)打印到控制臺。此代碼可用于讀取和修改存儲在 TOML 文件中的配置數(shù)據(jù),然后使用 toml.dump () 方法將修改后的數(shù)據(jù)保存回文件中。
app.py
import toml with open('config.toml', 'r') as f: config = toml.load(f) # 從配置訪問值 print(config['server']['host']) print(config['server']['port']) print(config['database']['username'])
輸出:
使用 Python 寫入 TOML 文件
然后使用toml.load() 方法將文件的內(nèi)容解析到名為 config的字典中。然后,代碼通過在 'database' 鍵下添加新的鍵值對來修改 config 字典中的特定值。新的鍵為 'level2' ,值為'新添加的信息' 。最后,使用toml.dump()方法將修改后的 config字典寫回到config.toml文件中,該方法將字典轉(zhuǎn)換為TOML格式并寫入到文件中。文件以寫模式打開,with語句確保寫入后正確關(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 庫,該庫提供了加載和轉(zhuǎn)儲 TOML 文件的功能,使用 open () 函數(shù)打開名為 config.toml 的 TOML 配置文件。該文件以讀取模式('r')打開,并使用 toml.load() 函數(shù)將其內(nèi)容加載到 Python 字典中。生成的字典稱為 config,包含 TOML 文件中的配置數(shù)據(jù)。然后,代碼通過將數(shù)據(jù)庫部分中的級別值更改為“信息”來修改配置字典中的值。
最后將修改后的config字典寫回到 config.toml 中再次使用 open() 函數(shù)打開文件,這次處于寫入模式('w')。使用 toml.dump() 函數(shù)將修改后的字典寫入文件,該函數(shù)將字典轉(zhuǎn)換為 TOML 格式的字符串并將其寫入文件。
app.py
import toml # 加載TOML文件 with open('config.toml', 'r') as f: config = toml.load(f) # 修改配置中的值 config['database']['level'] = 'information' # 將修改后的配置寫回文件 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ù),但是它們在數(shù)據(jù)類型、靈活性和語法方面有所不同。選擇的格式取決于您項目的具體需求以及您正在使用的工具和庫。
- 語法:JSON 使用基于 JavaScript 對象表示法的語法,而 TOML 使用更易于理解的語法,更接近配置文件。
- 注釋:TOML 支持注釋,而 JSON 不支持。
- 數(shù)據(jù) 類型:JSON 支持一組有限的數(shù)據(jù)類型,包括字符串、數(shù)字、布爾值、數(shù)組和對象。另一方面,TOML 支持更廣泛的數(shù)據(jù)類型,包括日期、時間和表格。
- 使用 案例:JSON 廣泛用于 Web 應(yīng)用程序、API 和數(shù)據(jù)庫之間的數(shù)據(jù)交換。TOML 通常用于配置文件,例如流行的靜態(tài)站點生成器 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讀寫TOML文件的示例代碼的文章就介紹到這了,更多相關(guān)Python讀寫TOML文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3實現(xiàn)無權(quán)最短路徑的方法
這篇文章主要介紹了python3實現(xiàn)無權(quán)最短路徑的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05python利用socket實現(xiàn)客戶端和服務(wù)端之間進行通信
這篇文章主要介紹了python實現(xiàn)客戶端和服務(wù)端之間進行通信,文章通過python利用socket展開詳情介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05pytorch實現(xiàn)特殊的Module--Sqeuential三種寫法
今天小編就為大家分享一篇pytorch實現(xiàn)特殊的Module--Sqeuential三種寫法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01python 定義類時,實現(xiàn)內(nèi)部方法的互相調(diào)用
今天小編就為大家分享一篇python 定義類時,實現(xiàn)內(nèi)部方法的互相調(diào)用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12