當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程語言 » python解析yaml

python解析yaml-九游会j9娱乐平台

發布時間: 2024-02-08 21:30:43

1. 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格式數據
mp() 將json格式數據保存到文件
mps() 將json格式數據保存為字元串類型

toml的語法廣泛地由key = "value"、[節名]、#注釋構成。
支持以下數據類型:字元串、整形、浮點型、布爾型、日期時間、數組和圖表。
config.toml文件

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

安裝:pip install toml
讀取文件

安裝:

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

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

支持豐富的數據類型。

不同格式的明確表達。

yaml使用時需要注意:

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

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

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

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

想獲取某一項配置,再通過字典的操作獲取:
config.yaml文件

讀取

2. python 自動化處理 yaml 文件-



yaml文件內容—示例1:

yaml文件內容—示例2:

從上述示例文件內容可以看到 yaml 數據結構:

1). 對象:鍵值對的集合(簡稱 "映射或字典")

例如:family 和 address 這兩個對象後面分別有對應的鍵值對集合。

2). 鍵值對用冒號 「:」 結構表示,冒號與值之間需用空格分隔

例如:

family 對象中的 key 為 name 與其對應的 value 值 smile_family 之間是使用空格分隔的。

address 對象中的 key 為 province 與其對應的 value 值 beijing 之間是使用空格分隔的。

3). 數組:一組按序排列的值(簡稱 "序列或列表"),數組前加有 「-」 符號,符號與值之間需用空格分隔

例如:

parents 中的 john 和 jane

children 中的 lily 和 frank

4). 純量(scalars):單個的、不可再分的值。例如:字元串、bool值、整數、浮點數、時間、日期、null等

none值可用null也可用 ~ 表示;


yaml文件內容如下:

python解析輸出為:

這個例子輸出一個字典,其中value包括所有基本類型

yaml文件內容如下:

python解析輸出為:悄局

yaml文件內容如下:

python輸出為:

如果字元串沒有空格或特殊字元,不需要加引號,但如果其中有空格或啟則讓特殊字元,則需要加引號。

這里要注意單引號和雙引號的區別:

單引號中的特殊字元轉到 python 會被轉義,也就是到最後是原樣輸出;

雙引號不會被 python 轉義,到最後是輸出了特殊字元盯搭;

yaml文件內容如下:

python輸出:


3. python常用函數包有哪些

一些python常用函數包:

1、urllib3

urllib3是一個 python 的 http 客戶端,它擁有 python 標准庫中缺少的許多功能:

  • 線程安全

  • 連接池

  • 客戶端 ssl/tls 驗證

  • 使用分段編碼上傳文件

  • 用來重試請求和處理 http 重定向的助手

  • 支持 gzip 和 deflate 編碼

  • http 和 socks 的代理支持

2、six

six 是一個是 python 2 和 3 的兼容性庫。這個項目旨在支持可同時運行在 python 2 和 3 上的代碼庫。它提供了許多可簡化 python 2 和 3 之間語法差異的函數。

3、botocore、boto3、s3transfer、awscli

botocore是 aws 的底層介面。botocore是 boto3 庫(#22)的基礎,後者讓你可以使用 amazon s3 和 amazon ec2 一類的服務。botocore 還是 aws-cli 的基礎,後者為 aws 提供統一的命令行界面。

s3transfer(#7)是用於管理 amazon s3 傳輸的 python 庫。它正在積極開發中,其介紹頁面不推薦人們現在使用,或者至少等版本固定下來再用,因為其 api 可能發生變化,在次要版本之間都可能更改。boto3、aws-cli和其他許多項目都依賴s3transfer。

4、pip

pip是「pip installs packages」的首字母遞歸縮寫。

pip很容易使用。要安裝一個包只需pip install 即可,而刪除包只需pip uninstall 即可。

最大優點之一是它可以獲取包列表,通常以requirements.txt文件的形式獲取。該文件能選擇包含所需版本的詳細規范。大多數 python 項目都包含這樣的文件。

如果結合使用pip與virtualenv(列表中的 #57),就可以創建可預測的隔離環境,同時不會干擾底層系統,反之亦然。

5、python-dateutil

python-dateutil模塊提供了對標准datetime模塊的強大擴展。我的經驗是,常規的python datetime缺少哪些功能,python-dateutil就能補足那一塊。

6、requests

requests建立在我們的 #1 庫——urllib3基礎上。它讓 web 請求變得非常簡單。相比urllib3來說,很多人更喜歡這個包。而且使用它的最終用戶可能也比urllib3更多。後者更偏底層,並且考慮到它對內部的控制級別,它一般是作為其他項目的依賴項。

7、certifi

近年來,幾乎所有網站都轉向 ssl,你可以通過地址欄中的小鎖符號來識別它。加了小鎖意味著與該站點的通信是安全和加密的,能防止竊聽行為。

8、idna

根據其 pypi 頁面,idna提供了「對 rfc5891 中指定的應用程序中國際化域名(idna)協議的支持。」

idna的核心是兩個函數:toascii和tounicode。toascii會將國際 unicode 域轉換為 ascii 字元串。tounicode則逆轉該過程。在idna包中,這些函數稱為idna.encode()和idna.decode()

9、pyyaml

yaml是一種數據序列化格式。它的設計宗旨是讓人類和計算機都能很容易地閱讀代碼——人類很容易讀寫它的內容,計算機也可以解析它。

pyyaml是 python 的yaml解析器和發射器,這意味著它可以讀寫yaml。它會把任何 python 對象寫成yaml:列表、字典,甚至是類實例都包括在內。

10、pyasn1

像上面的idna一樣,這個項目也非常有用:

asn.1 類型和 der/ber/cer 編碼(x.208)的純 python 實現

所幸這個已有數十年歷史的標准有很多信息可用。asn.1是 abstract syntax notation one 的縮寫,它就像是數據序列化的教父。它來自電信行業。也許你知道協議緩沖區或 apache thrift?這就是它們的 1984 年版本。

11、docutils

docutils是一個模塊化系統,用來將純文本文檔處理為很多有用的格式,例如 html、xml 和 latex 等。docutils能讀取restructuredtext格式的純文本文檔,這種格式是類似於 markdown 的易讀標記語法。

12、chardet

你可以用chardet模塊來檢測文件或數據流的字元集。比如說,需要分析大量隨機文本時,這會很有用。但你也可以在處理遠程下載的數據,但不知道用的是什麼字元集時使用它。

13、rsa

rsa包是一個純 python 的 rsa 實現。它支持:

  • 加密和解密

  • 簽名和驗證簽名

  • 根據 pkcs#1 1.5 版生成密鑰

它既可以用作 python 庫,也能在命令行中使用。

14、jmespath

jmespath,發音為「james path」,使 python 中的 json 更容易使用。它允許你聲明性地指定如何從 json 文檔中提取元素。

15、setuptools

它是用於創建 python 包的工具。不過,其文檔很糟糕。它沒有清晰描述它的用途,並且文檔中包含無效鏈接。最好的信息源是這個站點,特別是這個創建 python 包的指南。

16、pytz

像dateutils一樣,這個庫可幫助你處理日期和時間。有時候,時區處理起來可能很麻煩。幸好有這樣的包,可以讓事情變得簡單些。

17、futures

從 python 3.2 開始,python 提供current.futures模塊,可幫助你實現非同步執行。futures 包是該庫適用於 python 2 的 backport。它不適用於 python3 用戶,因為 python 3 原生提供了該模塊。

18、colorama

使用 colorama,你可以為終端添加一些顏色:

更多python知識請關注python自學網

4. 使用 python 讀寫文件

有些數據是臨時的,它們在應用程序運行時存儲在內存中,然後丟棄。但是有些數據是持久的。它們存儲在硬碟驅動器上供以後使用,而且它們通常是用戶最關心的東西。對於程序員來說,編寫代碼讀寫文件是很常見的,但每種語言處理該任務的方式都不同。本文演示了如何使用 python 處理文件數據。

在 linux 上,你可能已經安裝了 python。如果沒有,你可以通過發行版軟體倉庫安裝它。例如,在 centos 或 rhel 上:

在 macos 上,你可以使用 macports或homebrew安裝。在 windows 上,你可以使用chocolatey安裝。

一旦安裝了 python,打開你最喜歡的文本編輯器,准備好寫代碼吧。

如果你需要向一個文件中寫入數據,記住有三個步驟:

這與你在計算機上編碼、編輯照片或執行其他操作時使用的步驟完全相同。首先,打開要編輯的文檔,然後進行編輯,最後關閉文檔。

在 python 中,過程是這樣的:

這個例子中,第一行以 模式打開了一個文件,然後用變數 f 表示,我使用了 f 是因為它在 python 代碼中很常見,使用其他任意有效變數名也能正常工作。

在打開文件時,有不同的模式:

第二行表示向文件中寫入數據,本例寫入的是純文本,但你可以寫入任意類型的數據。

最後一行關閉了文件。

對於快速的文件交互,常用有一種簡短的方法可以寫入數據。它不會使文件保持打開狀態,所以你不必記得調用 close 函數。相反,它使用 with 語法:

如果你或你的用戶需要通過應用程序需要向文件中寫入一些數據,然後你需要使用它們,那麼你就需要讀取文件了。與寫入類似,邏輯一樣:

同樣的,這個邏輯反映了你一開始使用計算機就已知的內容。閱讀文檔,你可以打開、閱讀,然後關閉。在計算機術語中,「打開」文件意味著將其載入到內存中。

實際上,一個文本文件內容肯定不止一行。例如,你需要讀取一個配置文件、 游戲 存檔或樂隊下一首歌曲的歌詞,正如你打開一本實體書時,你不可能立刻讀完整本書,代碼也只能解析已經載入到內存中的文件。因此,你可能需要遍歷文件的內容。

示例的第一行指明使用 模式打開一個文件,然後文件交由變數 f 表示,但就像你寫數據一樣,變數名是任意的。 f 並沒有什麼特殊的,它只是單詞 「file」 的最簡表示,所以 python 程序員會經常使用它。

在第二行,我們使用了 line ,另一個任意變數名,用來表示 f 的每一行。這告訴 python 逐行迭代文件的內容,並將每一行的內容列印到輸出中(在本例中為終端或idle)。

就像寫入一樣,使用 with 語法是一種更簡短的方法讀取數據。即不需要調用 close 方法,方便地快速交互。

使用 python 有很多方法向文件寫入數據,包括用 json、yaml、toml等不同的格式寫入。還有一個非常好的內置方法用於創建和維護sqlite資料庫,以及許多庫來處理不同的文件格式,包括圖像、音頻和視頻等。

via: https://opensource.com/article/21/7/read-write-files-python

作者:seth kenlon選題:lujun9972譯者:mjseven校對:turbokernel

熱點內容
androidapk版本號 發布:2024-02-10 00:04:16 瀏覽:990
培訓學校源碼 發布:2024-02-09 23:57:28 瀏覽:687
pythonifaandb 發布:2024-02-09 23:36:26 瀏覽:264
javarsa私鑰加密 發布:2024-02-09 23:36:17 瀏覽:239
python證書微軟認證 發布:2024-02-09 23:34:27 瀏覽:999
wlan沒有ip配置怎麼解決 發布:2024-02-09 23:24:19 瀏覽:532
javatoexe 發布:2024-02-09 22:48:53 瀏覽:418
路由器撥號賬號密碼在哪裡 發布:2024-02-09 22:29:30 瀏覽:164
ssd緩存是什麼 發布:2024-02-09 22:00:12 瀏覽:626
簡單游腳本試用破解 發布:2024-02-09 21:42:34 瀏覽:41
网站地图