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

Python3中常見配置文件寫法匯總

 更新時(shí)間:2022年08月11日 09:38:58   作者:Carl_奕然  
在開發(fā)過程中,我們會(huì)用到一些固定參數(shù)或者是常量。對于這些較為固定且常用到的部分,往往會(huì)將其寫到一個(gè)固定文件中,這些文件就是配置文件。本文為大家匯總了Python3中常見配置文件的寫法,感興趣的可以了解一下

1、引言

小魚:小屌絲,走啊,出去擼串啊,

小屌絲:沒時(shí)間啊,魚哥

小魚:嗯??? 啥事情讓你忙的擼串都不去了

小屌絲:我的BOSS讓我寫一個(gè)自動(dòng)化平臺(tái),但是我不知道這些參數(shù)放在**.py文件里面,還是放在配置文件**里面。

小魚:就因?yàn)檫@個(gè)?

小屌絲:對啊,

小魚:唉…我還以為啥事呢, 放在配置文件里。

小屌絲:但是,我對配置文件寫法不太熟(尷尬的一批)…

小魚:… 每次都上當(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é)(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)庫,我們直接就可以用來對 ini 文件進(jìn)行解析。

如我們將上述內(nèi)容保存在一個(gè)名為 test1.ini 的文件中,然后使用 read() 方法來進(jìn)行解析和讀取,最后通過 items() 方法來獲取指定節(jié)點(diǎn)下的所有鍵值對。

代碼示例:

# -*- 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)。

上面代碼,獲取到鍵值對后,我們再來轉(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}")

#對內(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

其它安裝方式,直接看這兩篇:

Python3自動(dòng)安裝第三方庫,跟pip說再見

Python:一行代碼,導(dǎo)入Python所有庫

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配置文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 200個(gè)Python?標(biāo)準(zhǔn)庫總結(jié)

    200個(gè)Python?標(biāo)準(zhǔn)庫總結(jié)

    這篇文章主要給大家分享了200個(gè)Python?標(biāo)準(zhǔn)庫總結(jié),主要對文本、數(shù)據(jù)類型、數(shù)學(xué)等多個(gè)類型總結(jié),既有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-01-01
  • Python基于read(size)方法讀取超大文件

    Python基于read(size)方法讀取超大文件

    這篇文章主要介紹了Python基于read(size)方法讀取超大文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python如何進(jìn)行基準(zhǔn)測試

    python如何進(jìn)行基準(zhǔn)測試

    這篇文章主要介紹了python如何進(jìn)行基準(zhǔn)測試,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python?Fire創(chuàng)建簡單的命令行接口

    Python?Fire創(chuàng)建簡單的命令行接口

    Python?Fire是一個(gè)開源庫,它能夠自動(dòng)生成命令行接口,讓Python程序變得更加友好和易用,本文主要為大家介紹了Python?Fire如何根據(jù)Python函數(shù)自動(dòng)生成命令行接口,感興趣的可以了解下
    2023-11-11
  • 詳解python開發(fā)環(huán)境搭建

    詳解python開發(fā)環(huán)境搭建

    這篇文章主要介紹了詳解python開發(fā)環(huán)境搭建 ,記錄一下過程,方便自己以后配置,也方便正在學(xué)習(xí)中的同事配置他們的環(huán)境。
    2016-12-12
  • python關(guān)于第三方日志的QA記錄詳解

    python關(guān)于第三方日志的QA記錄詳解

    這篇文章主要為大家介紹了python關(guān)于第三方日志的QA記錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • python爬蟲控制aiohttp并發(fā)數(shù)量方式

    python爬蟲控制aiohttp并發(fā)數(shù)量方式

    這篇文章主要介紹了python爬蟲控制aiohttp并發(fā)數(shù)量方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python函數(shù)式編程Filter傳參方式

    Python函數(shù)式編程Filter傳參方式

    這篇文章主要為大家介紹了Python函數(shù)式編程Filter傳參方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 講清楚fit_transform()和transform()的區(qū)別及說明

    講清楚fit_transform()和transform()的區(qū)別及說明

    這篇文章主要介紹了講清楚fit_transform()和transform()的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python中Selenium上傳文件的幾種方式

    Python中Selenium上傳文件的幾種方式

    本文主要介紹了Python中Selenium上傳文件的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

舞阳县| 敦煌市| 云和县| 新乐市| 明水县| 资源县| 青浦区| 阿坝县| 宣恩县| 炉霍县| 泰安市| 贵港市| 高邑县| 南溪县| 连南| 无锡市| 丰宁| 晋城| 崇信县| 太保市| 玉屏| 黄大仙区| 东台市| 启东市| 临夏县| 永济市| 太原市| 玛纳斯县| 星座| 新巴尔虎右旗| 岳池县| 二连浩特市| 宁安市| 呼和浩特市| 华阴市| 郴州市| 遂昌县| 田阳县| 六安市| 柳江县| 凤冈县|