日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python生成yaml文件_Python实践34-读写yaml文件

發布時間:2023/12/10 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python生成yaml文件_Python实践34-读写yaml文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于yaml

YAML語言的設計目標,就是方便人類讀寫。如果你想要實現一些用ini不好做到的配置,可以使用yaml格式作為配置文件

大小寫敏感

使用縮進表示層級關系

縮進時不允許使用Tab鍵,只允許使用空格。

縮進的空格數目不重要,只要相同層級的元素左側對齊即可

yaml數據結構

YAML 支持的數據結構有三種。

對象

鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)

對象的一組鍵值對,使用冒號結構表示。

數組

一組按次序排列的值,又稱為序列(sequence) / 列表(list)

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

純量(scalars)

單個的、不可再分的值

包括字符串,布爾值,整數,浮點數,Null,時間,日期

一個yaml文件

name: John Smith

age: 37

spouse:

name: Jane Smith

age: 25

children:

- name: Jimmy Smith

age: 15

- name: Jenny Smith

age: 12

和它對應的json文件如下:

{ name: 'John Smith',

age: 37,

spouse: { name: 'Jane Smith', age: 25 },

children:

[ { name: 'Jimmy Smith', age: 15 },

{ name: 'Jenny Smith', age: 12 } ]

}

讀寫yaml文件

import yaml

if __name__ == "__main__":

with open('father.yml') as f:

content = yaml.load(f)

# output:

print(type(content))

print(content)

content.update({'age': 38})

print(content)

with open('PyYAML.yml', 'w') as nf:

yaml.dump(content, nf)

生成的新yaml文件形式如下:

age: 38

children:

- {age: 15, name: Jimmy Smith}

- {age: 12, name: Jenny Smith}

name: John Smith

spouse: {age: 25, name: Jane Smith}

仔細一看,跟原yaml文件不像嘛,尤其是幾個大括號,很刺眼,這可怎么辦?

使用ruamel.yaml代替PyYAML

解決方法就是使用ruamel.yaml代替PyYAML,因為PyYAML貌似已經不再維護了

安裝:pip install ruamel.yaml

使用ruamel.yaml庫里面函數參數Loader=ruamel.yaml.RoundTripLoader和Dumper=ruamel.yaml.RoundTripDumper可以用來保持新生成的yaml文件的表現和輸入文件一致。代碼如下:

from ruamel import yaml

if __name__ == "__main__":

with open('father.yml') as f:

content = yaml.load(f, Loader=yaml.RoundTripLoader)

# output:

print(type(content))

print(content)

content.update({'age': 38})

print(content)

with open('ruamel.yml', 'w') as nf:

yaml.dump(content, nf, Dumper=yaml.RoundTripDumper)

生成新的yaml文件形式如下,正是我們期望的格式:

name: John Smith

age: 38

spouse:

name: Jane Smith

age: 25

children:

- name: Jimmy Smith

age: 15

- name: Jenny Smith

age: 12

代碼下載

本文代碼已經歸檔到github,您可以訪問下面的鏈接獲得,歡迎star該代碼倉庫。

代碼地址

總結

以上是生活随笔為你收集整理的python生成yaml文件_Python实践34-读写yaml文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。