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

Python中使用YAML文件進(jìn)行配置文件管理

 更新時(shí)間:2023年12月24日 08:36:17   作者:tester Jeffky  
配置文件管理已經(jīng)成為了一個(gè)不可或缺的環(huán)節(jié)。它們包含了程序運(yùn)行所需的各種參數(shù),本文主要介紹了Python中使用YAML文件進(jìn)行配置文件管理,感興趣的可以了解一下

在現(xiàn)代軟件開(kāi)發(fā)中,配置文件管理已經(jīng)成為了一個(gè)不可或缺的環(huán)節(jié)。它們包含了程序運(yùn)行所需的各種參數(shù),如數(shù)據(jù)庫(kù)連接信息、服務(wù)器地址等。然而,傳統(tǒng)的配置文件通常以文本形式存在,這種方式既容易出錯(cuò),又不利于代碼的維護(hù)和擴(kuò)展。因此,使用YAML文件進(jìn)行配置文件管理成為了一種趨勢(shì)。本文將介紹如何使用Python中的PyYAML庫(kù)來(lái)操作YAML文件,以及YAML文件的一些優(yōu)缺點(diǎn)。

首先,我們需要安裝PyYAML庫(kù)??梢允褂胮ip命令進(jìn)行安裝:

pip install pyyaml

接下來(lái),我們來(lái)看一下YAML文件的基本結(jié)構(gòu)。YAML文件是一種簡(jiǎn)潔的非標(biāo)記語(yǔ)言,它使用縮進(jìn)來(lái)表示層級(jí)關(guān)系。例如,以下是一個(gè)包含字典和列表的YAML文件:

person:
  name: John Doe
  age: 30
  hobbies:
    - reading
    - swimming

我們可以使用Python中的PyYAML庫(kù)來(lái)讀取和操作YAML文件。以下是一些基本的使用方法:

  • 讀取YAML文件:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

print(data['person']['name'])  # 輸出:John Doe
  • 修改YAML文件中的數(shù)據(jù):
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

data['person']['age'] = 31

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 添加新的鍵值對(duì):
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

data['person']['job'] = 'engineer'

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 刪除鍵值對(duì):
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

del data['person']['age']

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 操作嵌套的字典和列表:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

# 訪問(wèn)嵌套的字典
print(data['person']['hobbies'][0])  # 輸出:reading

# 修改嵌套的字典
data['person']['hobbies'][0] = 'cycling'

# 添加新的鍵值對(duì)到嵌套的字典
data['person']['address'] = {'city': 'New York', 'street': '5th Avenue'}

# 刪除嵌套的字典中的鍵值對(duì)
del data['person']['address']['city']

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)
  • 操作嵌套的列表:
import yaml

with open('config.yml', 'r') as f:
    data = yaml.safe_load(f)

# 訪問(wèn)嵌套的列表
print(data['person']['hobbies'])  # 輸出:['reading', 'swimming']

# 修改嵌套的列表
data['person']['hobbies'].append('hiking')

# 添加新的元素到嵌套的列表
data['person']['friends'].append('Alice')

# 刪除嵌套的列表中的元素
data['person']['hobbies'].remove('reading')

with open('config.yml', 'w') as f:
    yaml.safe_dump(data, f)

YAML文件的優(yōu)點(diǎn):

  • 簡(jiǎn)潔易懂:YAML文件使用縮進(jìn)來(lái)表示層級(jí)關(guān)系,使得文件結(jié)構(gòu)清晰易讀。
  • 易于維護(hù):YAML文件可以方便地添加、修改和刪除鍵值對(duì),而無(wú)需修改整個(gè)文件。
  • 跨平臺(tái):YAML文件可以在多種操作系統(tǒng)和編程語(yǔ)言中使用,具有良好的兼容性。
  • 可讀性高:YAML文件的格式與純文本非常相似,便于人類(lèi)閱讀和理解。

YAML文件的缺點(diǎn):

  • 性能較差:由于YAML文件使用了縮進(jìn)和換行符來(lái)表示層級(jí)關(guān)系,因此在解析和生成文件時(shí)需要消耗一定的計(jì)算資源。
  • 不支持復(fù)雜的數(shù)據(jù)類(lèi)型:YAML文件只支持字符串、數(shù)字、布爾值、列表和字典這五種基本數(shù)據(jù)類(lèi)型,對(duì)于其他復(fù)雜的數(shù)據(jù)類(lèi)型(如日期、時(shí)間、正則表達(dá)式等)的支持有限。

示例:
本專(zhuān)欄中使用yaml作為配置文件,如下方代碼

BASE:
  test:
    url: "http://119.3.246.198:64644"

創(chuàng)建Conf.py操作類(lèi),用于讀取和解析一個(gè)名為conf.yml的配置文件。

import os
from utils.YamlUtil import YamlReader

current = os.path.abspath(__file__)

BASE_DIR = os.path.dirname(os.path.dirname(current))

_config_path = BASE_DIR + os.sep + "config"
_config_file = _config_path + os.sep + 'conf.yml'


def get_config_path():
    return _config_path


def get_config_file():
    return _config_file


class ConfigYaml:
    def __init__(self):
        self.config = YamlReader(get_config_file()).data()

    def get_conf_url(self):
        return self.config['BASE']['test']['url']

  • 這段代碼中導(dǎo)入了os模塊和YamlReader類(lèi),用于處理文件路徑和讀取YAML文件。然后定義了兩個(gè)函數(shù)get_config_path()和get_config_file(),分別返回配置文件所在的路徑和文件名。
  • 接下來(lái)定義了一個(gè)名為ConfigYaml的類(lèi),該類(lèi)在初始化時(shí)會(huì)調(diào)用YamlReader類(lèi)來(lái)讀取配置文件,并將讀取到的數(shù)據(jù)存儲(chǔ)在self.config屬性中。類(lèi)中還定義了一個(gè)方法get_conf_url(),用于獲取配置文件中的BASE.test.url的值。
  • 最后,代碼中創(chuàng)建了一個(gè)ConfigYaml類(lèi)的實(shí)例,并調(diào)用get_conf_url()方法來(lái)獲取配置文件中的URL值。其他配置信息也可以使用這種思想創(chuàng)建,如報(bào)告路徑、測(cè)試用例路徑等等。

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

相關(guān)文章

  • Python3.8中使用f-strings調(diào)試

    Python3.8中使用f-strings調(diào)試

    這篇文章主要介紹了Python3.8中使用f-strings調(diào)試的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Python的venv虛擬環(huán)境使用及說(shuō)明

    Python的venv虛擬環(huán)境使用及說(shuō)明

    這篇文章主要介紹了Python的venv虛擬環(huán)境使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 分析語(yǔ)音數(shù)據(jù)增強(qiáng)及python實(shí)現(xiàn)

    分析語(yǔ)音數(shù)據(jù)增強(qiáng)及python實(shí)現(xiàn)

    數(shù)據(jù)增強(qiáng)是一種生成合成數(shù)據(jù)的方法,即通過(guò)調(diào)整原始樣本來(lái)創(chuàng)建新樣本。這樣我們就可獲得大量的數(shù)據(jù)。這不僅增加了數(shù)據(jù)集的大小,還提供了單個(gè)樣本的多個(gè)變體,這有助于我們的機(jī)器學(xué)習(xí)模型避免過(guò)度擬合
    2021-06-06
  • python 調(diào)整圖片亮度的示例

    python 調(diào)整圖片亮度的示例

    這篇文章主要介紹了python 調(diào)整圖片亮度的示例代碼,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • tensorflow中next_batch的具體使用

    tensorflow中next_batch的具體使用

    本篇文章主要介紹了tensorflow中next_batch的具體使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Python基礎(chǔ)教程之循環(huán)語(yǔ)句(for、while和嵌套循環(huán))

    Python基礎(chǔ)教程之循環(huán)語(yǔ)句(for、while和嵌套循環(huán))

    這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之循環(huán)語(yǔ)句(for、while和嵌套循環(huán))的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python抽樣方法解讀及實(shí)現(xiàn)過(guò)程

    python抽樣方法解讀及實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了python抽樣方法解讀及實(shí)現(xiàn)過(guò)程講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程

    用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程

    這篇文章主要介紹了用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程,包括單位格式轉(zhuǎn)換、分類(lèi)匯總等基本操作,需要的朋友可以參考下
    2015-03-03
  • 詳解Python中os.path與pathlib的用法和性能對(duì)比

    詳解Python中os.path與pathlib的用法和性能對(duì)比

    pathlib 模塊是在Python3.4版本中首次被引入到標(biāo)準(zhǔn)庫(kù)中的,這篇文章主要來(lái)和大家介紹一下Python中os.path與pathlib再用法和性能上的區(qū)別,感興趣的可以了解下
    2024-03-03
  • Python如何使用xlrd和xlwt庫(kù)讀寫(xiě)excel文件

    Python如何使用xlrd和xlwt庫(kù)讀寫(xiě)excel文件

    這篇文章主要介紹了Python如何使用xlrd和xlwt庫(kù)讀寫(xiě)excel文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評(píng)論