欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

1. 基本類型

配置項的值在TOML中也像在JSON中一樣,是可以有類型的。

它說支持的基本類型主要有布爾值數(shù)值(整數(shù),浮點數(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"])
# 運行結(jié)果
bool_var1 =  False
bool_var2 =  True

toml文件示例:sample.toml

bool_var1 = false
bool_var2 = true

1.2. 數(shù)值

數(shù)值類型分為整數(shù)浮點數(shù)兩種。

整型除了10進制,也可以用16進制,8進制和2進制。

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

解析之后,會自動轉(zhuǎn)換成10進制。

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"])
# 運行結(jié)果
int_var1 =  99
int_var2 =  -17
int_var3 =  1234000
hex_var1 =  222
hex_var2 =  222
oct_var =  438
bin_var =  214

浮點型的各種配置示例:

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

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

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"])
# 運行結(jié)果
float_var1 =  3.1415
float_var2 =  -0.01
float_var3 =  5e+22
float_var4 =  -0.02
float_var5 =  6.626e-34

1.3. 字符串

對于字符串類型的配置項,支持單行多行字符串。

配置文件示例:

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"])
# 運行結(jié)果
str_single =  abcdefg
str_multi =  ab
cd
ef

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

  • 單引號字符串:原樣顯示字符串內(nèi)容
  • 雙引號字符串:解析字符串中的轉(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"])
# 運行結(jié)果
str_var1 =  ab  cd
ef
str_var2 =  ab\tcd\nef

1.4. 日期

最后一個常用的基本類型是日期類型。

配置示例:

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)
# 運行結(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'>)

日期類型可以是完整的年月日時分秒,也可以只有年月日時分秒

2. 復合類型

復合類型主要是列表字典。

2.1. 列表

列表中的元素可以是上面的介紹的任意基本類型

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

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"])
# 運行結(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ù)類型可以不同,也可以是一個字典)

[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"])
# 運行結(jié)果
dict_var1 =  {
    'key1': 1, 
    'key2': 3.14,
    'key3': 'str',
    'key4': datetime.datetime(2023, 9, 13, 10, 8, 22),
    'sub_dict': {'key': 'val'}
}

3. 類型組合

如果是寫代碼的話,列表中嵌入字典或者字典中嵌入列表都非常簡單,

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

TOML提供了簡單的語法來實現(xiàn)復雜類型之間的組合。

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"])
# 運行結(jié)果
students =  [
    {'name': 'aaa', 'age': 15, 'score': 100},
    {'name': 'bbb', 'age': 14, 'score': 89},
    {'name': 'ccc', 'age': 17, 'score': 98},
]

3.2. 字典中的列表

字典中嵌入列表比較簡單:

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

解析示例:

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

4. TOML的優(yōu)勢

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

而且TOML的配置項格式更接近腳本語言,寫起來就像代碼中定義變量一樣。

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

JSON配置相比,TOML簡潔性方面遠遠勝出;

YAML配置相比,TOML簡潔性以及語法靈活性方面遠遠勝出。

正是因為它的種種優(yōu)勢,現(xiàn)在流行的golangrust語言的項目中,很多都以TOML作為配置文件。

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

相關文章

  • 淺談Django 頁面緩存的cache_key是如何生成的

    淺談Django 頁面緩存的cache_key是如何生成的

    這篇文章主要介紹了Django 頁面緩存的cache_key是如何生成的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 一起來看看python的裝飾器代碼

    一起來看看python的裝飾器代碼

    這篇文章主要為大家詳細介紹了python裝飾器代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python中WebService客戶端接口調(diào)用及身份驗證的問題

    Python中WebService客戶端接口調(diào)用及身份驗證的問題

    這篇文章主要介紹了Python中WebService客戶端接口調(diào)用及身份驗證的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python使用numpy模塊實現(xiàn)矩陣和列表的連接操作方法

    Python使用numpy模塊實現(xiàn)矩陣和列表的連接操作方法

    今天小編就為大家分享一篇Python使用numpy模塊實現(xiàn)矩陣和列表的連接操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python一鍵去抖音視頻水印工具

    python一鍵去抖音視頻水印工具

    抖音越來越火,越刷越上癮,總感覺下一個視頻一定會更精彩,根本停不下來。想將抖音里喜歡的小哥哥/小姐姐的視頻全部存到電腦硬盤里,還沒有抖音的視頻水印,跟著小編來看看吧
    2018-09-09
  • Python中aiohttp模塊的簡單運用方式

    Python中aiohttp模塊的簡單運用方式

    這篇文章主要介紹了Python中aiohttp模塊的簡單運用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python爬蟲使用瀏覽器cookies:browsercookie過程解析

    Python爬蟲使用瀏覽器cookies:browsercookie過程解析

    這篇文章主要介紹了Python爬蟲使用瀏覽器cookies:browsercookie,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • python中查看.db文件中表格的名字及表格中的字段操作

    python中查看.db文件中表格的名字及表格中的字段操作

    這篇文章主要介紹了python中查看.db文件中表格的名字及表格中的字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python如何更新包

    python如何更新包

    在本篇文章里小編給大家整理的是關于python更新包的相關知識點內(nèi)容,有興趣的朋友們可以參考下。
    2020-06-06
  • python 自動刷新網(wǎng)頁的兩種方法

    python 自動刷新網(wǎng)頁的兩種方法

    這篇文章主要介紹了python 自動刷新網(wǎng)頁的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論