最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中Toml配置文件的操作詳解

 更新時(shí)間:2023年09月17日 10:47:30   作者:databook  
TOML是一種用于配置文件的輕量級(jí)、易讀的數(shù)據(jù)序列化格式,這篇文章主要為大家詳細(xì)介紹了python如何對(duì)Toml配置文件進(jìn)行簡(jiǎn)單操作,感興趣的小伙伴可以了解下

TOML是一種用于配置文件的輕量級(jí)、易讀的數(shù)據(jù)序列化格式。

由Tom Preston-Werner創(chuàng)建,旨在成為一種簡(jiǎn)單直觀(guān)的配置文件語(yǔ)言,適用于任何編程語(yǔ)言環(huán)境。

TOML支持多種數(shù)據(jù)類(lèi)型,包括字符串、整數(shù)、浮點(diǎn)數(shù)、布爾值、日期時(shí)間、數(shù)組和嵌套表等等。

TOML通常用于配置應(yīng)用程序或軟件的設(shè)置,例如配置數(shù)據(jù)庫(kù)連接信息、網(wǎng)絡(luò)參數(shù)、日志級(jí)別等。

在許多編程語(yǔ)言中,都有第三方庫(kù)或原生支持,用于解析和生成TOML格式的配置文件。

Python3.11版本開(kāi)始,原生支持TOML的解析,不需要再安裝第三方的庫(kù)。

1. 基本類(lèi)型

配置項(xiàng)的值在TOML中也像在JSON中一樣,是可以有類(lèi)型的。

它說(shuō)支持的基本類(lèi)型主要有布爾值,數(shù)值(整數(shù),浮點(diǎn)數(shù)),字符串日期等幾種。

1.1. 布爾值

python中的TOML模塊可以加載toml格式的字符串,或者toml文件的文件流。

# -*- coding: utf-8 -*-
import tomllib
# 加載toml文件
with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("bool_var1 = ", data["bool_var1"])
print("bool_var2 = ", data["bool_var2"])
# 運(yùn)行結(jié)果
bool_var1 =  False
bool_var2 =  True

toml文件示例:sample.toml

bool_var1 = false
bool_var2 = true

1.2. 數(shù)值

數(shù)值類(lèi)型分為整數(shù)浮點(diǎn)數(shù)兩種。

整型除了10進(jìn)制,也可以用16進(jìn)制,8進(jìn)制和2進(jìn)制。

# 10進(jìn)制
int_var1 = 99
int_var2 = -17
int_var3 = 1_234_000
# 16進(jìn)制,大小寫(xiě)都可以
hex_var1 = 0xDE
hex_var2 = 0xde
# 8進(jìn)制
oct_var = 0o666
# 2進(jìn)制
bin_var = 0b11010110

解析之后,會(huì)自動(dòng)轉(zhuǎn)換成10進(jìn)制。

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("int_var1 = ", data["int_var1"])
print("int_var2 = ", data["int_var2"])
print("int_var3 = ", data["int_var3"])
print("hex_var1 = ", data["hex_var1"])
print("hex_var2 = ", data["hex_var2"])
print("oct_var = ", data["oct_var"])
print("bin_var = ", data["bin_var"])
# 運(yùn)行結(jié)果
int_var1 =  99
int_var2 =  -17
int_var3 =  1234000
hex_var1 =  222
hex_var2 =  222
oct_var =  438
bin_var =  214

浮點(diǎn)型的各種配置示例:

float_var1 = 3.1415
float_var2 = -0.01
float_var3 = 5e+22
float_var4 = -2E-2
float_var5 = 6.626e-34

解析示例:各種格式的float寫(xiě)法都可以解析。

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("float_var1 = ", data["float_var1"])
print("float_var2 = ", data["float_var2"])
print("float_var3 = ", data["float_var3"])
print("float_var4 = ", data["float_var4"])
print("float_var5 = ", data["float_var5"])
# 運(yùn)行結(jié)果
float_var1 =  3.1415
float_var2 =  -0.01
float_var3 =  5e+22
float_var4 =  -0.02
float_var5 =  6.626e-34

1.3. 字符串

對(duì)于字符串類(lèi)型的配置項(xiàng),支持單行多行字符串。

配置文件示例:

str_single = "abcdefg"
str_multi = """ab
cd
ef
"""

解析示例:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("str_single = ", data["str_single"])
print("str_multi = ", data["str_multi"])
# 運(yùn)行結(jié)果
str_single =  abcdefg
str_multi =  ab
cd
ef

字符串的配置除了單行多行以外,還有單引號(hào)雙引號(hào)的區(qū)別。

  • 單引號(hào)字符串:原樣顯示字符串內(nèi)容
  • 雙引號(hào)字符串:解析字符串中的轉(zhuǎn)義符
str_var1 = "ab\tcd\nef"
str_var2 = 'ab\tcd\nef'

解析之后:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("str_var1 = ", data["str_var1"])
print("str_var2 = ", data["str_var2"])
# 運(yùn)行結(jié)果
str_var1 =  ab  cd
ef
str_var2 =  ab\tcd\nef

1.4. 日期

最后一個(gè)常用的基本類(lèi)型是日期類(lèi)型。

配置示例:

date_var1 = 2023-09-13T10:08:22
date_var2 = 2023-09-13
date_var3 = 10:08:22

解析示例:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
s = "date_var1 = {} (type: {})".format(data["date_var1"], 
                                       type(data["date_var1"]))
print(s)
s = "date_var2 = {} (type: {})".format(data["date_var2"], 
                                       type(data["date_var2"]))
print(s)
s = "date_var3 = {} (type: {})".format(data["date_var3"], 
                                       type(data["date_var3"]))
print(s)
# 運(yùn)行結(jié)果
date_var1 = 2023-09-13 10:08:22 (type: <class 'datetime.datetime'>)
date_var2 = 2023-09-13 (type: <class 'datetime.date'>)
date_var3 = 10:08:22 (type: <class 'datetime.time'>)

日期類(lèi)型可以是完整的年月日時(shí)分秒,也可以只有年月日時(shí)分秒

2. 復(fù)合類(lèi)型

復(fù)合類(lèi)型主要是列表字典。

2.1. 列表

列表中的元素可以是上面的介紹的任意基本類(lèi)型

配置示例:(列表中元素的數(shù)據(jù)類(lèi)型可以不同,也可以是一個(gè)列表)

lst_var1 = [1, 3.14, "str", 2023-09-13T10:08:22]
lst_var2 = [[1, 2], ["abc", "def"]]

解析示例:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("lst_var1 = ", data["lst_var1"])
print("lst_var2 = ", data["lst_var2"])
# 運(yùn)行結(jié)果
lst_var1 =  [1, 
             3.14, 
             'str', 
             datetime.datetime(2023, 9, 13, 10, 8, 22)]
lst_var2 =  [[1, 2], ['abc', 'def']]

2.2. 字典

配置示例:(字典中值的數(shù)據(jù)類(lèi)型可以不同,也可以是一個(gè)字典)

[dict_var1]
key1 = 1
key2 = 3.14
key3 = "str"
key4 = 2023-09-13T10:08:22
[dict_var1.sub_dict]
key = "val"

解析示例:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("dict_var1 = ", data["dict_var1"])
# 運(yùn)行結(jié)果
dict_var1 =  {
    'key1': 1, 
    'key2': 3.14,
    'key3': 'str',
    'key4': datetime.datetime(2023, 9, 13, 10, 8, 22),
    'sub_dict': {'key': 'val'}
}

3. 類(lèi)型組合

如果是寫(xiě)代碼的話(huà),列表中嵌入字典或者字典中嵌入列表都非常簡(jiǎn)單,

但是,配置文件中定義這種復(fù)雜的結(jié)構(gòu)就沒(méi)那么容易了。

TOML提供了簡(jiǎn)單的語(yǔ)法來(lái)實(shí)現(xiàn)復(fù)雜類(lèi)型之間的組合。

3.1. 列表中的字典

配置示例:

[[student]]
name = "aaa"
age = 15
score = 100
[[student]]
name = "bbb"
age = 14
score = 89
[[student]]
name = "ccc"
age = 17
score = 98

解析示例:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("students = ", data["student"])
# 運(yùn)行結(jié)果
students =  [
    {'name': 'aaa', 'age': 15, 'score': 100},
    {'name': 'bbb', 'age': 14, 'score': 89},
    {'name': 'ccc', 'age': 17, 'score': 98},
]

3.2. 字典中的列表

字典中嵌入列表比較簡(jiǎn)單:

[teacher]
name = "abc"
classes = ["一班", "二班", "三班"]

解析示例:

with open("./sample.toml", "rb") as f:
    data = tomllib.load(f)
print("teacher = ", data["teacher"])
# 運(yùn)行結(jié)果
teacher =  {
    'name': 'abc', 
    'classes': ['一班', '二班', '三班']
}

4. TOML的優(yōu)勢(shì)

與常用的INI,JSONYAML等格式的配置文件相比,TOML誕生的較晚,所以借鑒了它們的優(yōu)勢(shì),采用更加簡(jiǎn)單直觀(guān)的語(yǔ)法和縮進(jìn)格式,使得文件非常易讀和易于編輯。

而且TOML的配置項(xiàng)格式更接近腳本語(yǔ)言,寫(xiě)起來(lái)就像代碼中定義變量一樣。

與傳統(tǒng)的INI配置相比,TOML數(shù)據(jù)類(lèi)型支持以及語(yǔ)法靈活性方面遠(yuǎn)遠(yuǎn)勝出;

JSON配置相比,TOML簡(jiǎn)潔性方面遠(yuǎn)遠(yuǎn)勝出;

YAML配置相比,TOML簡(jiǎn)潔性以及語(yǔ)法靈活性方面遠(yuǎn)遠(yuǎn)勝出。

正是因?yàn)樗姆N種優(yōu)勢(shì),現(xiàn)在流行的golangrust語(yǔ)言的項(xiàng)目中,很多都以TOML作為配置文件。

到此這篇關(guān)于Python中Toml配置文件的操作詳解的文章就介紹到這了,更多相關(guān)Python Toml配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中多進(jìn)程調(diào)試技巧指南

    Python中多進(jìn)程調(diào)試技巧指南

    調(diào)試多進(jìn)程程序比單進(jìn)程程序更具挑戰(zhàn)性,因?yàn)槊總€(gè)進(jìn)程都有獨(dú)立的內(nèi)存空間和執(zhí)行環(huán)境,本文整理了調(diào)試 Python 多進(jìn)程程序的有效方法,有需要的小伙伴可以了解下
    2025-06-06
  • Python使用time模塊實(shí)現(xiàn)指定時(shí)間觸發(fā)器示例

    Python使用time模塊實(shí)現(xiàn)指定時(shí)間觸發(fā)器示例

    這篇文章主要介紹了Python使用time模塊實(shí)現(xiàn)指定時(shí)間觸發(fā)器,結(jié)合實(shí)例形式分析了Python時(shí)間相關(guān)模塊與方法使用技巧,需要的朋友可以參考下
    2017-05-05
  • 詳解python中的生成器、迭代器、閉包、裝飾器

    詳解python中的生成器、迭代器、閉包、裝飾器

    這篇文章主要介紹了python中的生成器、迭代器、閉包、裝飾器的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)LR1文法的完整實(shí)例代碼

    Python實(shí)現(xiàn)LR1文法的完整實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)LR1文法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python激活虛擬環(huán)境(venv)的實(shí)現(xiàn)

    python激活虛擬環(huán)境(venv)的實(shí)現(xiàn)

    本文主要介紹了python激活虛擬環(huán)境(venv)的實(shí)現(xiàn),包括修改PATH環(huán)境變量、設(shè)置VIRTUAL_ENV變量、修改終端提示符、使用虛擬環(huán)境中的python和pip、加載虛擬環(huán)境的依賴(lài)等操作,感興趣的可以了解一下
    2025-05-05
  • Python文件處理的魔法之旅

    Python文件處理的魔法之旅

    Python文件處理在數(shù)據(jù)持久化、配置管理和日志記錄方面發(fā)揮著至關(guān)重要的作用,通過(guò)學(xué)習(xí)如何讀取、寫(xiě)入和修改文件,開(kāi)發(fā)者可以更加高效地處理各種數(shù)據(jù)和配置文件,需要的朋友可以參考下
    2024-11-11
  • Python筆試面試題小結(jié)

    Python筆試面試題小結(jié)

    這篇文章主要介紹了Python筆試面試題的一些相關(guān)代碼,需要的朋友可以參考下
    2019-09-09
  • python基于socket實(shí)現(xiàn)網(wǎng)絡(luò)廣播的方法

    python基于socket實(shí)現(xiàn)網(wǎng)絡(luò)廣播的方法

    這篇文章主要介紹了python基于socket實(shí)現(xiàn)網(wǎng)絡(luò)廣播的方法,涉及Python操作socket的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python分割和拼接字符串

    python分割和拼接字符串

    python分割和拼接字符串的實(shí)例,使用了string的split和join 方法,并對(duì)這二個(gè)方法做說(shuō)明。
    2013-11-11
  • Python數(shù)據(jù)可視化Pyecharts庫(kù)實(shí)現(xiàn)桑葚圖效果

    Python數(shù)據(jù)可視化Pyecharts庫(kù)實(shí)現(xiàn)桑葚圖效果

    這篇文章主要介紹了Python數(shù)據(jù)可視化如何使用Pyecharts庫(kù)來(lái)實(shí)現(xiàn)桑葚圖效果圖,文中給出實(shí)現(xiàn)的示例代碼,有需要的朋友可以借鑒參考想,希望能夠有所幫助
    2021-09-09

最新評(píng)論

通城县| 罗甸县| 尼勒克县| 交城县| 康平县| 从化市| 巴青县| 开鲁县| 调兵山市| 恩施市| 佛教| 原阳县| 五常市| 玉田县| 衡水市| 交口县| 大悟县| 涿鹿县| 德惠市| 扶风县| 兖州市| 永济市| 原阳县| 易门县| 耿马| 沾化县| 汉川市| 双峰县| 西乌珠穆沁旗| 新化县| 获嘉县| 柘荣县| 阜新市| 独山县| 仙桃市| 平山县| 宜川县| 莫力| 个旧市| 綦江县| 扎赉特旗|