RPA 實戰(zhàn):讓小姐姐填滿你的硬盤(上)
714
2025-04-05
年輕人的狀態(tài)
有多少人和這張圖一樣,每天清晨起床時,都后悔昨晚不該熬夜,決定以后晚上早點睡覺。結果到了晚上,照樣一副 欲上九天攬月,下四海捉鱉的精神面貌…
pythonic的標記語言
之前總結過一篇關于小數(shù)據(jù)存儲文件大比拼,當時著重介紹了json,因為它在各類編程語言的通用性較強。但今天,我想給大家介紹一款更加適合pythoner使用的語言Yaml。
之所以說它更適合pythoner使用,是因為Yaml在很多方面都與python語言神似。
讓我們再來看看Yaml的數(shù)據(jù)類型:
數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
純量(scalars):單個的、不可再分的值。字符串、布爾值、整數(shù)、浮點數(shù)、Null、時間、日期
介紹了這么多,讓我們先來一起學習下Yaml的語法…
Yaml語法學習
下面我們針對Yaml的集中類型,進行逐一學習。需要注意的是,Yaml的結構標識符前無需添加空格,但標識符后需要添加一個空格,比如:
數(shù)組
之所以先介紹數(shù)組,是因為這個數(shù)據(jù)類型最簡單…
對象
純量
我們需要明確純量的定義:單個的,不可拆分的值,這句話尤為重要。
純量默認是無需添加引號的,但正如上面說的,當它可能出現(xiàn)被拆分的情況時,我們需要將它放在引號中。
引號的使用類似Linux,單引號和雙引號都可以使用,雙引號不會對特殊字符轉義。
下面集中列舉可能出現(xiàn)的情況:
關于引用
Yaml支持數(shù)據(jù)集之間的引用,&用來建立錨點(defaults),<<表示合并到當前數(shù)據(jù),*用來引用錨點。
Python使用Yaml
寫了這么多Yaml的知識,可Python怎么能與Yaml進行交互呢?使用Pyyaml。
安裝: pip install pyyaml
導入: import yaml
至于操作,簡直不要太簡單… yaml只有兩個方法load、dump,而且使用完全和json模塊一樣。但真的如此嗎?顯然不是…
Yaml安全告警
由于Yaml數(shù)據(jù)存在安全隱患,在使用pyyaml進行l(wèi)oad時,會給出提示:
Yaml文件特性
由于Yaml文件可以使用三個短橫杠 --- 在一個文件中保存多個Yaml文檔內容,所以Yaml的方法額外多出了load_all dump_all兩種方法。但這里有個問題,如果使用load_all加載單個文檔,沒有問題,但如果使用load加載多個文檔,則會提示:
所以,無腦的簡單粗暴,直接使用load_all與dump_all。當然,如果為了寫著練習,可以判斷文件后,單文件返回dict,如果多文件將迭代器轉化為list后進行返回…
示例
為了能讓大家更多的熟悉方法,我們就寫一個沒什么用的Yaml單文件與多文件解析器吧。
先拷貝上面的示例,編寫兩個簡單的yaml文件:
breeze_single.yaml
breeze.yaml
現(xiàn)在讓我們解析打印這兩個yaml,最終再回寫兩個new_xxx的yaml文件吧。
可以看到,讀寫都沒有問題,但yaml將我們之前的引用,進行了重寫…但無傷大雅。
The End
本文來自“清風Python”歡迎關注
C 語言 python
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。