python操作yaml,python操作壓縮包

本文目錄一覽:

python中四種配置文件

常用的配置文件後綴是.ini、.conf、.py,當然還有使用.json、.txt的,推薦使用常用的.ini、.py,配置文件的名字一般是config便於理解和使用。

ini配置文件,這類配置文件我們使用內置configparser庫來使用,它可以實現配置文件的寫入、更新、刪除、讀取等操作非常方便,建議使用這種方式。

新建一個config.ini的配置文件內容如下,編碼格式要是 utf-8 以免出錯。:

其中[]中的是section節點,該節點下的等式是option即鍵=值

然後每一行寫一個option ,每個選項就是一個option。直接寫名字,後面加 ” = ” 再加上它的值就行,字符串的表示不要加引號,否則引號也會被解析出來。

可以在配置文件中加入注釋 ,但是注釋必須是單獨的一行,且以 「#」 開頭。只是每次運行時不會讀入注釋,只要運行一次,寫入文件後,所有的注釋都會消失。

config.json文件

使用python內置的 json 標準庫進行解析ini文件。

load() 從json文件中讀取json格式數據

loads() 將字符串類型數據轉化為json格式數據

dump() 將json格式數據保存到文件

dumps() 將json格式數據保存為字符串類型

TOML的語法廣泛地由key = “value”、[節名]、#注釋構成。

支持以下數據類型:字符串、整形、浮點型、布爾型、日期時間、數組和圖表。

config.toml文件

使用外部庫 toml 解析toml文件。

安裝:pip install toml

讀取文件

安裝:

YAML是目前最推薦的配置文件格式。優秀的配置文件標準它幾乎都有:

容易閱讀和修改,支持注釋。

支持豐富的數據類型。

不同格式的明確表達。

yaml使用時需要注意:

yaml強制縮進。雖然不規定具體縮進幾個空格,但是同一級的內容要保持相同的縮進。

冒號後面一定要加空格, 否則無法解析。

python解析 yaml 可以使用pyyaml庫,操作和標準的文件操作非常類似:

得到的data就是解析後的數據,在python當中,它是一個嵌套的字典:

想獲取某一項配置,再通過字典的操作獲取:

config.yaml文件

讀取

2019-05-30 Python+Jinja2+yaml 批量生成配置

目前來看,Python+yaml+Jinja2是非常方便生成批量配置的組合,在運維工作中用於批量生成設備的基礎配置。

這裡我的案例是配置一批交換機,基礎配置不同的地方有:loopback地址(IPV4和IPV6),設備名稱,ISIS網絡號,至於其他互聯地址什麼的因為情況比較複雜,還是手工做吧。

那麼思路就有了。

1、生成yaml文件,類似於下面結構:

這裡說明一下,loopback地址的V4網段是先規劃好的,V6地址和ISIS網絡號通過一定規則根據V4地址生成,這個yaml文件可以通過讀取excel文件,按照算法生成yaml文件,這個在其他文章里再寫。

2、讀取yaml文件,生成一個由字典組成的列表。每個字典的信息就包含了每台設備需要的變量。

3、寫一個函數,遍歷列表裡的字典,每讀取一個字典,把其中變量取出來放進一個臨時字典,渲染jinja2的模板,對每個字典輸出不同的配置文件。這個臨時字典每讀取一次就清空,重新寫入變量。

有一些細節比如文檔取名,時間函數等要調用一些模塊,總結一下涉及的知識點,有:yaml模塊,jinja2模塊,os模塊,日期函數,條件循環,I/O操作。

附上python腳本:

模板文件放在『templates』目錄下,否則會報錯找不到文件。

python新手,有不合理的地方請高手指點。

YAML用法詳解

  近期在調試SONIC上基於Ansible的PTF測試平台時,使用到了YANML配置語言,此處稍作解釋,匯總一下YAML的語法及基本使用方法。

   YAML ( /ˈjæməl/ ,尾音類似 camel 駱駝)是一個可讀性高,用來表達數據序列的格式。YAML參考了其他多種語言,包括: C語言 、 Python 、 Perl ,並從 XML 、電子郵件的數據格式(RFC 2822 )中獲得靈感。上述介紹引用自 維基百科 ,通俗的講,YAML是專門用來寫配置文件的語言,非常簡潔和強大,遠比 JSON/XML格式方便。YAML允許在層次結構中存儲結構化數據。YAML 旨在以人為和機器可讀,並且開銷最小。YAML 規範可以在 yaml.org 找到,官方還提供了一個便捷的 YAML小抄 。

  再次強調,字符串不需要包在引號之內。有兩種方法書寫多行文字(multi-line strings),一種可以保存新行(使用|字符),另一種可以摺疊新行(使用字符)

和保存新行不同的是,換行字符會被轉換成空白字符。而引領空白字符則會被自動消去。

常量值最基本的數字、字符串、布爾值等等

在python中,會將上述鍵值對解析為一個字典

上述鍵值對可以嵌套,從而實現更加複雜的數據結構:

在python中,會將其解析為嵌套的字典結構:

在python中,會將其解析為字典嵌套列表的複合數據結構:

  為了維持文件的簡潔,並避免數據輸入的錯誤,YAML提供了結點參考(*)和散列合併()參考到其他結點標籤的錨點標記()。參考會將樹狀結構加入錨點標記的內容,並可以在所有數據結構中運作(可以參考上面”ship-to”的示例)合併只有散列表可以使用,可以將鍵值自錨點標記複製到指定的散列表中。當數據被instantiate合併和參考會被剖析器自動展開。

YAML 文件介紹

YAML 是一種可讀性非常高,與程序語言數據結構非常接近。同時具備豐富的表達能力和可擴展性,並且易於使用的數據標記語言。

YAML是 “YAML Ain’t a Markup Language”(YAML不是一種標記語言)的遞歸縮寫。

這麼命名的方式,表示 YAML 強調的不是標記,而是數據本身。

YAML 參考了其他多種語言,包括:XML、C語言、Python、Perl 以及電子郵件格式 RFC2822。

YAML 發佈與 2001 年,之前並不出名,現在逐漸開始流行。測試圈中,主要應用於自動化測試過程,用來進行數據驅動的數據存儲載體。

基本語法規則(很接近 Python 的語法規則):

支持的數據格式:

以下是 YAML 數據格式的示例:

對象

轉換為Python字典格式為

YAML也支持另一種對象的寫法,將所有的鍵值對寫成一個行內對象

轉換為Python字典格式為

數組

一組連詞線開頭的行,構成一個數組

轉換為Python

也可以通過縮進空格來表示多維數組

轉換為Python的列表

當然,也可以採用行內表示法

轉換為Python

純量

純量是最基本的、不可再分的值。 以下數據類型都是常見的純量。

純量一般表示如下

轉換為Python

yaml 文件通過 pyyaml 庫轉換後就是 Python 中對應的數據類型。直接進行操作即可,相較從 excel 中讀取數據全部是字符串的方式來說,處理更方便。相對於 json 格式,可讀性更高。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303043.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論