成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

詳解Python中Pyyaml模塊的使用

瀏覽:4日期:2022-07-09 08:27:25

一、YAML是什么

YAML是專門用來寫配置文件的語言,遠比JSON格式方便。

YAML語言的設計目標,就是方便人類讀寫。

YAML是一種比XML和JSON更輕的文件格式,也更簡單更強大,它可以通過縮進來表示結構,是不是聽起來就和Python很搭?

顧名思義,用語言編寫的文件就可以稱之為YAML文件。PyYaml是Python的一個專門針對YAML文件操作的模塊,使用起來非常簡單

安裝 pip install pyyaml # 如果是py2,使用 pip install yaml

二、PyYaml的簡單使用

使用起來非常簡單,就像json、pickle一樣,load、dump就足夠我們使用了。

load()示例:返回一個對象

import yamlyaml_str = '''name: 一條大河age: 1956job: Singer'''y = yaml.load(yaml_str, Loader=yaml.SafeLoader)print(y)

運行結果:

{’name’: ’一條大河’, ’age’: 1956, ’job’: ’Singer’}

load_all()示例:生成一個迭代器

如果string或文件包含幾塊yaml文檔,可以使用yaml.load_all來解析全部的文檔。

yaml_test.yaml文件內容:

---name: qiyuage: 20歲---name: qingqingage: 19歲

操作yaml文件的test.py文件如下:

import yamlwith open('./yaml_test', ’r’, encoding=’utf-8’) as ymlfile: cfg = yaml.load_all(ymlfile, Loader=yaml.SafeLoader) for data in cfg: print(data)

運行結果:

{’name’: ’qiyu’, ’age’: ’20歲’}{’name’: ’qingqing’, ’age’: ’19歲’}

dump()示例:將一個python對象生成為yaml文檔

import yamljson_data = {’name’: ’一條大河’, ’age’: 1956, ’job’: [’Singer’,’Dancer’]}y = yaml.dump(json_data, default_flow_style=False).encode(’utf-8’).decode(’unicode_escape’)print(y)

運行結果:

age: 1956job:- Singer- Dancername: '一條大河'

使用dump()傳入參數,可以直接把內容寫入到yaml文件:

import yamljson_data = {’name’: ’一條大河’, ’age’: 1956, ’job’: [’Singer’, ’Dancer’]}with open(’./yaml_write.yaml’, ’w’) as f: y = yaml.dump(json_data, f) print(y)

寫入內容后的yaml_write.yaml:

詳解Python中Pyyaml模塊的使用

yaml.dump_all()示例:將多個段輸出到一個文件中

import yamlobj1 = {'name': 'river', 'age': 2019}obj2 = ['Lily', 1956]obj3 = {'gang': 'ben', 'age': 1963}obj4 = ['Zhuqiyu', 1994]with open(’./yaml_write_all.yaml’, ’w’, encoding=’utf-8’) as f: y = yaml.dump([obj1, obj2, obj3, obj4], f) print(y)with open(’./yaml_write_all.yaml’, ’r’) as r: y1 = yaml.load(r, Loader=yaml.SafeLoader) print(y1)

寫入內容后的yaml_write_all.yaml:

詳解Python中Pyyaml模塊的使用

為什么寫入文件后的格式有的帶1個“-”,有的帶2個“-”?

為什么yaml文件讀出來的的格式是List?

三、YAML的語法規則和數據結構

看完了以上4個簡單的示例,現在就來總結下YAML語言的基本語法

YAML 基本語法規則如下:

1、大小寫敏感

2、使用縮進表示層級關系

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

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

5、# 表示注釋,從這個字符一直到行尾,都會被解析器忽略,這個和python的注釋一樣

6、列表里的項用'-'來代表,字典里的鍵值對用':'分隔

知道了語法規則,現在來回答下上面的2個問題:

1、帶1個“-”表示不同的模塊(單個數組或者字典),帶2個“-”是因為數組中元素以“-”開始,加上表示不同模塊的那一個“-”,呈現出來就是2個“-”

2、因為yaml文件中包含多個模塊(多個數組或者字典),讀取出來的是這些模塊的一個集合

3、有且只有當yaml文件中只有1個字典時,讀取出來的數據的類型也是字典

YAML 支持的數據結構有3種:

1、對象:鍵值對的集合

2、數組:一組按次序排列的值,序列(sequence) 或 列表(list)

3、純量(scalars):單個的、不可再分的值,如:字符串、布爾值、整數、浮點數、Null、時間、日期

支持數據示例:

yaml_test_data.yaml的內容:

str: 'Big River' #字符串int: 1548 #整數float: 3.14#浮點數boolean: true #布爾值None: null# 也可以用 ~ 號來表示 nulltime: ’2019-11-20T08:47:46.576701+00:00’ # 時間,ISO8601 date: 2019-11-20 16:47:46.576702# 日期

操作代碼:

import yamlimport datetimeimport pytzyaml_data = { 'str': 'Big River', 'int': 1548, 'float': 3.14, ’boolean’: True, 'None': None, ’time’: datetime.datetime.now(tz=pytz.timezone(’UTC’)).isoformat(), ’date’: datetime.datetime.today()}with open(’./yaml_test’, ’w’) as f: y = yaml.dump(yaml_data, f) print(y)with open(’./yaml_test’, ’r’) as r: y1 = yaml.load(r, Loader=yaml.SafeLoader) print(y1)

控制臺輸出:

詳解Python中Pyyaml模塊的使用

其他語法規則

1、如果字符串沒有空格或特殊字符,不需要加引號,但如果其中有空格或特殊字符,就需要加引號了

詳解Python中Pyyaml模塊的使用

2、引用

& 和 * 用于引用

name: &name SKPtester: *name

運行結果:

{’name’: ’SKP’, ’tester’: ’SKP’}

3、強制轉換

用 !! 實現

str: !!str 3.14int: !!int '123'

運行結果:

{’int’: 123, ’str’: ’3.14’}

4、分段

在同一個yaml文件中,可以用“—”3個“-”來分段,這樣可以將多個文檔寫在一個文件中

舉例見上述load_all()示例

四、python對象生成yaml文檔

1、yaml.dump()方法

import yamlimport osdef generate_yaml_doc(yaml_file): py_object = {’school’: ’zhu’, ’students’: [’a’, ’b’]} file = open(yaml_file, ’w’, encoding=’utf-8’) yaml.dump(py_object, file) file.close()current_path = os.path.abspath('.')yaml_path = os.path.join(current_path, 'generate.yaml')generate_yaml_doc(yaml_path)'''結果school: zhustudents:- a- b'''

2、使用ruamel模塊中的yaml方法生成標準的yaml文檔

import osfrom ruamel import yaml # pip3 install ruamel.yamldef generate_yaml_doc_ruamel(yaml_file): py_object = {’school’: ’zhu’, ’students’: [’a’, ’b’]} file = open(yaml_file, ’w’, encoding=’utf-8’) yaml.dump(py_object, file, Dumper=yaml.RoundTripDumper) file.close()current_path = os.path.abspath('.')yaml_path = os.path.join(current_path, 'generate.yaml')generate_yaml_doc_ruamel(yaml_path)'''結果school: zhustudents:- a- b'''

使用ruamel模塊中的yaml方法讀取yaml文檔(用法與單獨import yaml模塊一致)

import osfrom ruamel import yamldef get_yaml_data_ruamel(yaml_file): file = open(yaml_file, ’r’, encoding=’utf-8’) data = yaml.load(file, Loader=yaml.Loader) file.close() print(data)current_path = os.path.abspath('.')yaml_path = os.path.join(current_path, 'generate.yaml')get_yaml_data_ruamel(yaml_path)

到此這篇關于Python中Pyyaml模塊的使用的文章就介紹到這了,更多相關Python中Pyyaml模塊內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线播放日韩| 欧美日韩高清在线播放| 国产精品久久久久久户外露出 | 日韩高清中文字幕一区| 国产一区视频在线观看免费| 欧美一级播放| 亚洲婷婷在线视频| 日韩一区欧美一区| 亚洲成人高清在线| 日韩欧美国产小视频| 欧美日韩亚洲综合在线| 国产成人av资源| 日韩欧美成人午夜| 一本一本大道香蕉久在线精品| 国内精品久久久久影院色| 久久久精品综合| 精品国产亚洲一区二区三区在线观看| 欧美在线视频你懂得| 欧美理论片在线| 日本一不卡视频| 先锋影音久久久| 一区二区久久久| 国产视频不卡| 五月婷婷欧美视频| 久久久久久婷| 免费在线看成人av| 欧美日本一区二区| 国产真实精品久久二三区| 欧美日韩高清一区二区三区| 国产综合久久久久久久久久久久| 欧亚洲嫩模精品一区三区| 麻豆成人久久精品二区三区红 | 国产欧美一区二区精品秋霞影院| 不卡av在线网| 久久精品日产第一区二区三区高清版 | 免费h精品视频在线播放| 一区二区三区四区在线播放| 亚洲一区三区视频在线观看| 日韩主播视频在线| 色狠狠色噜噜噜综合网| 麻豆极品一区二区三区| 欧美丰满少妇xxxxx高潮对白| 国产成人亚洲综合a∨婷婷 | 国产精品久久久久久久久搜平片| 伊大人香蕉综合8在线视| 国产日韩欧美电影| 国内一区二区三区| 亚洲精品视频一区| 国产欧美亚洲日本| 亚洲综合色在线| 免费在线一区二区| 美国精品在线观看| 日韩欧美国产三级电影视频| 欧美在线三区| 亚洲少妇30p| 老司机午夜精品视频| 国产在线一区二区| 欧美精品一区在线观看| 欧美午夜免费| 亚洲国产日韩精品| 欧美日韩午夜影院| 成人精品高清在线| 国产精品久久久久久一区二区三区| 夜夜嗨av一区二区三区网站四季av| 亚洲无线码一区二区三区| 久久综合电影| 国产美女精品人人做人人爽 | 一区二区三区免费网站| 久久久久综合| 麻豆成人久久精品二区三区小说| 7777精品伊人久久久大香线蕉超级流畅 | 欧美一区二区三区四区五区| 91麻豆.com| **性色生活片久久毛片| 亚洲精品护士| 日韩专区欧美专区| 欧美一级欧美一级在线播放| 欧美在线不卡| 亚洲免费在线播放| 91高清视频在线| 国产成人三级在线观看| 国产欧美日韩三区| 日韩极品在线观看| 91精品国产一区二区三区蜜臀 | 国产精品一二三四五| 中文字幕精品一区| 中文日韩在线| 青青草97国产精品免费观看 | 免费在线国产精品| 激情综合色播五月| 精品日韩在线观看| 国产精品videosex极品| 亚洲成人久久影院| 欧美日韩亚洲综合一区| 你懂的亚洲视频| 一区二区三区波多野结衣在线观看 | 午夜免费欧美电影| 欧美一区二区三区人| 欧美日韩一区二区三区在线观看免| 一区二区三区av电影| 88在线观看91蜜桃国自产| 欧美特黄一级| 中文字幕一区二区三区乱码在线| 久久久久久国产精品一区| 成人av在线播放网址| 亚洲精品大片www| 91麻豆精品久久久久蜜臀| 亚洲午夜精品福利| 麻豆国产精品一区二区三区 | 91小视频免费观看| 综合分类小说区另类春色亚洲小说欧美| 日本高清无吗v一区| 99久久精品免费精品国产| 亚洲一区二区三区激情| 日韩三级免费观看| 国产免费成人| av电影在线观看完整版一区二区| 亚洲一区二区精品视频| 欧美成人免费网站| 国产欧美丝祙| 成人深夜福利app| 亚洲午夜一二三区视频| 久久综合色8888| 久久国产精品亚洲va麻豆| 国产成人福利片| 亚洲高清不卡在线| 2024国产精品| 欧洲一区二区三区在线| 欧美视频观看一区| 韩国v欧美v日本v亚洲v| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩成人综合| 国产精品综合| 91亚洲国产成人精品一区二区三 | 国产精品欧美久久久久无广告| 欧美私人免费视频| 一区二区三区四区五区视频| 97精品电影院| 国产美女精品在线| 天天影视涩香欲综合网| 国产欧美精品区一区二区三区 | 日韩av电影一区| 国产精品激情偷乱一区二区∴| 欧美亚洲国产一区二区三区va | 欧美麻豆精品久久久久久| 亚洲国产婷婷| 成人美女视频在线观看| 亚洲狠狠爱一区二区三区| 久久精子c满五个校花| 欧美色电影在线| 国产日韩综合| 国语自产精品视频在线看抢先版结局 | 精品国产三级a在线观看| 色狠狠色噜噜噜综合网| 极品裸体白嫩激情啪啪国产精品| 成人激情电影免费在线观看| 麻豆精品国产传媒mv男同| 亚洲一区二区三区四区在线观看| 国产三级久久久| 欧美一区二区三区不卡| 色婷婷综合久久久中文一区二区| 亚洲国产精品一区制服丝袜| 99麻豆久久久国产精品免费 | 国产电影一区二区三区| 日本不卡一区二区三区高清视频| 亚洲美女区一区| 欧美激情综合五月色丁香| 日韩欧美在线影院| 欧美日本国产一区| 色婷婷精品大视频在线蜜桃视频| 国产日韩1区 | 日日摸夜夜添夜夜添国产精品| 亚洲自拍与偷拍| 亚洲天堂精品在线观看| 精品国产乱码久久久久久牛牛| 久久国产精品亚洲77777| av福利精品导航| 成人亚洲一区二区一| 国产曰批免费观看久久久| 国产精品国产自产拍在线| 精品99999| 欧美mv日韩mv国产网站app| 69堂成人精品免费视频| 在线免费亚洲电影| 色综合久久久久| 久久精品卡一| 亚洲在线黄色| 亚洲一区二区三区高清不卡| 亚洲丰满在线| 国产精品国产一区二区| 欧美日本一区| 欧美午夜精彩| 伊人成人在线| 亚洲小说欧美另类社区| 激情欧美日韩| 亚洲国产第一| 一区视频在线看| 日韩图片一区| 亚洲一区二区三区涩| 亚洲欧美日韩一区在线观看|