<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
YAML是一種資料序列化格式,方便人類閱讀,且容易和指令碼語言互動。常用於組態檔,也用於資料儲存或傳輸。
YAML三種基本資料型別:
1.標量:如字串、整數和浮點數、日期
~
或不指定值;2.陣列:使用前導符號-
表示,且符號與值間要有空格;
3.物件:鍵值對集合;用冒號+空格:
分割;
檔案基本規則:
區分大小寫;
使用縮排表示層級關係:
字串不需要使用引號括起,但有特殊字串(如空格、冒號等)時必須使用引號;
使用#
註釋;
一個檔案中可包含多份YAML檔案:
用---
(即三個中劃線)表示一份檔案的開始;
[可選]用...
(即三個小數點)表示一份檔案的結束;
---
# 這是第一份檔案
one: 1
# 其他內容...
...---
# 這是第二份檔案
two: 2
# 其他內容...
Python中有兩個YAML模組:PyYAML和ruamel.yaml(pip3 install pyyaml
,pip3 install ruamel.yaml
)。
通過load函數可方便載入檔案內容,返回的內容可能是字典、列表或空:
import yaml def readYaml(file): # -> Union[dict, list, None]: with open(file, 'r', encoding='utf-8') as f: return yaml.load(f, yaml.Loader)
若檔案中有多個檔案,需要使用load_all來載入;此時返回的是一個生成器,需要一次獲取每個檔案:
def readAllDoc(file) -> list: with open(file, 'r', encoding='utf-8') as f: docs = yaml.load_all(f, yaml.Loader) # return [d for d in docs] return list(docs)
yaml.dump()方法不會將列表或字典資料進行轉化yaml標準模式。需要通過ruamel.yaml來生成標準的yaml檔案。
import ruamel.yaml def createYaml(file, data: dict): with open(file, 'w', encoding='utf-8') as f: writer = ruamel.yaml.YAML() writer.indent(mapping=2, sequence=4, offset=2) writer.dump(data, f)
通過dump_all可把陣列中的每個元素序列化為一個檔案:
def createAllDoc(file, data: list): with open(file, 'w', encoding='utf-8') as f: writer = ruamel.yaml.YAML() writer.indent(mapping=2, sequence=4, offset=2) writer.dump_all(data, f)
把[{'name': 'Mike', 'age': 12}, {'name': 'luce', 'age': 15}]
序列化。
dump會生成如下包含陣列元素的yaml檔案:
- name: Mike age: 12 - name: luce age: 15
dump_all會生成如下yaml檔案(包含兩個檔案):
name: Mike age: 12 --- name: luce age: 15
yaml讀取後為列表或字典。
讀取的內容為一個字典:
name: mike age: 25 score: 80.5
返回的值為:
{
"name": "mike",
"age": 25,
"score": 80.5
}
獲取裡面值,先判斷是否存在,再讀取:
if 'name' in data: print(data['name'])
讀取內容為一個列表:
- name: mike age: 24 - name: tom age: 30
返回的值為:
[
{
"name": "mike",
"age": 24
},
{
"name": "tom",
"age": 30
}
]
到此這篇關於Python YAML檔案的讀寫操作詳解的文章就介紹到這了,更多相關Python YAML檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45