Python3中常見配置文件寫法匯總
1、引言
小魚:小屌絲,走啊,出去擼串啊,
小屌絲:沒時(shí)間啊,魚哥
小魚:嗯??? 啥事情讓你忙的擼串都不去了
小屌絲:我的BOSS讓我寫一個(gè)自動(dòng)化平臺(tái),但是我不知道這些參數(shù)放在**.py文件里面,還是放在配置文件**里面。
小魚:就因?yàn)檫@個(gè)?
小屌絲:對(duì)啊,
小魚:唉…我還以為啥事呢, 放在配置文件里。
小屌絲:但是,我對(duì)配置文件寫法不太熟(尷尬的一批)…
小魚:… 每次都上當(dāng), 當(dāng)當(dāng)不一樣。
小屌絲:嘿嘿… 這不是要向你學(xué)習(xí)嘛。
小魚:… 為了擼串,認(rèn)了。
2、配置文件寫法
關(guān)于配置文件的寫法, 常用的 大致有:
- ini
- json
- toml
- yaml
接下來,我們就詳細(xì)聊一聊 這四種常用配置文件的寫法。
2.1 ini
ini 即 Initialize ,最早是在 Windows 上配置文件的存儲(chǔ)格式。
ini 文件的寫法通俗易懂,往往比較簡(jiǎn)單,通常由節(jié)(Section)、鍵(key)和值(value)組成,就像以下形式
localdb.ini
[localdb] Host = 127.0.0.1 user = root password = 888888 port = 3306 database = mysql
Python 本身內(nèi)置的 configparser 標(biāo)準(zhǔn)庫,我們直接就可以用來對(duì) ini 文件進(jìn)行解析。
如我們將上述內(nèi)容保存在一個(gè)名為 test1.ini 的文件中,然后使用 read() 方法來進(jìn)行解析和讀取,最后通過 items() 方法來獲取指定節(jié)點(diǎn)下的所有鍵值對(duì)。
代碼示例:
# -*- coding:utf-8 -*-
# @Time : 2022-08-04
# @Author : Carl_DJ
from configparser import ConfigParser
cfg = ConfigParser()
db_path= cfg.read("D:\Project\Project\localdb.ini")
#配置文件路徑
print(f"配置文件路徑:{db_path}")
db_msg = cfg.items("localdb")
#配置文件內(nèi)容
print(f"配置文件內(nèi)容:{db_msg}")
運(yùn)行結(jié)果
配置文件路徑:['D:\\Project\\Project\\localdb.ini']
配置文件內(nèi)容:{'host': '127.0.0.1', 'user': 'root', 'password': '888888', 'port': '3306', 'database': 'mysql'}
注意點(diǎn)
configparser 默認(rèn)將值以字符串的形式呈現(xiàn)。
上面代碼,獲取到鍵值對(duì)后,我們?cè)賮磙D(zhuǎn)換成字典,然后再進(jìn)行傳參。
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-04
# @Author : Carl_DJ
from configparser import ConfigParser
import pymysql
cfg = ConfigParser()
db_path= cfg.read("D:\Project\Project\localdb.ini")
#配置文件路徑
#print(f"配置文件路徑:{db_path}")
#對(duì)內(nèi)容轉(zhuǎn)換成字典
db_msg = dict(cfg.items("localdb"))
#鏈接數(shù)據(jù)庫
con = pymysql.connect(**db_msg)
2.2 json
看到j(luò)son,不要驚訝, 因?yàn)閖son也可以以配置文件存在的。
例如:
- npm(JavaScript 包管理工具類似 Python 的 pip)、
- 微軟出品的目前被廣泛使用的 VSCode 編輯器
都使用 json 編寫配置參數(shù)。
當(dāng)然 json也是python標(biāo)準(zhǔn)庫。
我們通過load() 和loads()方法來導(dǎo)入文件式和字符串的 json 內(nèi)容。
localdb.json
{
"localdb":{
"host": "127.0.0.1",
"user": "root",
"password": "888888",
"port": 3306,
"database": "mysql"
}
}代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-04
# @Author : Carl_DJ
import json
from pprint import pprint
with open("D:\Project\Project\localdb.json") as js:
cfg = json.load(js)['localdb']
#以json格式輸出
pprint(cfg)
運(yùn)行結(jié)果:
{'database': 'mysql',
'host': '127.0.0.1',
'password': '888888',
'port': 3306,
'user': 'root'}
2.3 toml
toml 格式(或 tml 格式)是 Github 聯(lián)合創(chuàng)始人 Tom Preston-Werner 所提出的一種配置文件格式。
toml 格式:

從樣例中可以看出,toml 有點(diǎn)類似于前面所講的 ini 文件。但是它比 ini 擴(kuò)展了更多的內(nèi)容。
當(dāng)然,如果要使用toml,就需要先安裝。
老規(guī)矩:
pip install toml
其它安裝方式,直接看這兩篇:
localdb.toml
[mysql] host = "127.0.0.1" user = "root" port = 3306 database = "test" [mysql.parameters] pool_size = 5 charset = "utf8" [mysql.fields] pandas_cols = [ "id", "name", "age", "date"]
代碼示例
# -*- coding:utf-8 -*-
# @Time : 2022-08-04
# @Author : Carl_DJ
import toml,os
from pprint import pprint
cfg = toml.load(os.path.expanduser("D:\Project\Project\localdb.toml"))
pprint(cfg)
運(yùn)行結(jié)果
{'mysql': {'database': 'test',
'fields': {'pandas_cols': ['id', 'name', 'age', 'date']},
'host': '127.0.0.1',
'parameters': {'charset': 'utf8', 'pool_size': 5},
'port': 3306,
'user': 'root'}}
可以看到 toml 文件被間接地轉(zhuǎn)化成了字典類型。
2.4 yaml
yaml 格式(或 yml 格式)是目前較為流行的一種配置文件,它早在 2001 由一個(gè)名為 Clark Evans 的人提出;
同時(shí)它也是目前被廣泛使用的配置文件類型,典型的就是 Docker 容器里的 docker-compose.yml 配置文件。
YAML 官方早已經(jīng)提供了相應(yīng)的 Python 庫進(jìn)行支持,即 PyYAML,
所以,第一步,需要安裝
pip install pyyaml
用法:
與 json 庫和 toml 庫一樣,通過 load() 方法來進(jìn)行加載。
但是,考慮到安全性, 所以,最好是使用 safe_load() 來代替 load() 方法
localdb.yaml
mysql:
host: "127.0.0.1"
port: 3306
user: "root"
password: "888888"
database: "test"
parameter:
pool_size: 5
charset: "utf8"
fields:
pandas_cols:
- id
- name
- age
- date
代碼示例:
# -*- coding:utf-8 -*-
# @Time : 2022-08-04
# @Author : Carl_DJ
import os
from pprint import pprint
with open("D:\Project\Project\localdb.json") as ya:
cfg = yaml.safe_load(ya)
pprint(cfg)
運(yùn)行結(jié)果:
{'mysql': {'database': 'test',
'fields': {'pandas_cols': ['id', 'name', 'age', 'date']},
'host': '127.0.0.1',
'parameter': {'charset': 'utf8', 'pool_size': 5},
'password': '888888',
'port': 3306,
'user': 'root'}}
可以看到最后結(jié)果和前面的 toml 庫的解析結(jié)果基本一致。
3、總結(jié)
看到這里,今天的分享差不多就完事了。
今天共分享了四種讀取配置文件的方式:
ini
- json
- toml
- yaml
其實(shí)在實(shí)際工作中, 只需要掌握一種或者兩種方式,即可。
當(dāng)然,如果要擴(kuò)展自己的知識(shí)庫,那就需要多掌握幾種,
畢竟誰會(huì)嫌棄自己的知識(shí)儲(chǔ)備量少呢?
以上就是Python3中常見配置文件寫法匯總的詳細(xì)內(nèi)容,更多關(guān)于Python配置文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
200個(gè)Python?標(biāo)準(zhǔn)庫總結(jié)
這篇文章主要給大家分享了200個(gè)Python?標(biāo)準(zhǔn)庫總結(jié),主要對(duì)文本、數(shù)據(jù)類型、數(shù)學(xué)等多個(gè)類型總結(jié),既有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-01-01
Python?Fire創(chuàng)建簡(jiǎn)單的命令行接口
Python?Fire是一個(gè)開源庫,它能夠自動(dòng)生成命令行接口,讓Python程序變得更加友好和易用,本文主要為大家介紹了Python?Fire如何根據(jù)Python函數(shù)自動(dòng)生成命令行接口,感興趣的可以了解下2023-11-11
python爬蟲控制aiohttp并發(fā)數(shù)量方式
這篇文章主要介紹了python爬蟲控制aiohttp并發(fā)數(shù)量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
講清楚fit_transform()和transform()的區(qū)別及說明
這篇文章主要介紹了講清楚fit_transform()和transform()的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02

