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ù)類(lèi)型:字符串、整數(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ù)組可以包含任何類(lèi)型的值,包括其他數(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 字典中。生成的字典稱(chēng)為 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ù)類(lèi)型、靈活性和語(yǔ)法方面有所不同。選擇的格式取決于您項(xiàng)目的具體需求以及您正在使用的工具和庫(kù)。
- 語(yǔ)法:JSON 使用基于 JavaScript 對(duì)象表示法的語(yǔ)法,而 TOML 使用更易于理解的語(yǔ)法,更接近配置文件。
- 注釋:TOML 支持注釋?zhuān)?JSON 不支持。
- 數(shù)據(jù) 類(lèi)型:JSON 支持一組有限的數(shù)據(jù)類(lèi)型,包括字符串、數(shù)字、布爾值、數(shù)組和對(duì)象。另一方面,TOML 支持更廣泛的數(shù)據(jù)類(lèi)型,包括日期、時(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)文章
python3實(shí)現(xiàn)無(wú)權(quán)最短路徑的方法
這篇文章主要介紹了python3實(shí)現(xiàn)無(wú)權(quán)最短路徑的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05python3 下載網(wǎng)絡(luò)圖片代碼實(shí)例
這篇文章主要介紹了python3 下載網(wǎng)絡(luò)圖片代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python中SQLite數(shù)據(jù)庫(kù)的使用
SQLite是一種輕型關(guān)系型數(shù)據(jù)庫(kù),常用于嵌入式設(shè)備和移動(dòng)應(yīng)用中。Python中內(nèi)置了SQLite模塊,可用于連接和操作SQLite數(shù)據(jù)庫(kù)。通過(guò)Python SQLite模塊,可以方便地創(chuàng)建、查詢(xún)和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),支持事務(wù)處理和數(shù)據(jù)庫(kù)操作的原子性保證2023-04-04Python正則表達(dá)式經(jīng)典入門(mén)教程
這篇文章主要介紹了Python正則表達(dá)式,結(jié)合具體實(shí)例形式歸納總結(jié)了Python正則表達(dá)式中常用的各種函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下2017-05-05python利用socket實(shí)現(xiàn)客戶(hù)端和服務(wù)端之間進(jìn)行通信
這篇文章主要介紹了python實(shí)現(xiàn)客戶(hù)端和服務(wù)端之間進(jìn)行通信,文章通過(guò)python利用socket展開(kāi)詳情介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05pytorch實(shí)現(xiàn)特殊的Module--Sqeuential三種寫(xiě)法
今天小編就為大家分享一篇pytorch實(shí)現(xiàn)特殊的Module--Sqeuential三種寫(xiě)法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01python 定義類(lèi)時(shí),實(shí)現(xiàn)內(nèi)部方法的互相調(diào)用
今天小編就為大家分享一篇python 定義類(lèi)時(shí),實(shí)現(xiàn)內(nèi)部方法的互相調(diào)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12