日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Python yaml模塊

瀏覽:28日期:2022-07-10 10:47:07

一、yaml文件介紹

yaml是一個專門用來寫配置文件的語言。

1. yaml文件規(guī)則

區(qū)分大小寫; 使用縮進(jìn)表示層級關(guān)系; 使用空格鍵縮進(jìn),而非Tab鍵縮進(jìn) 縮進(jìn)的空格數(shù)目不固定,只需要相同層級的元素左側(cè)對齊; 文件中的字符串不需要使用引號標(biāo)注,但若字符串包含有特殊字符則需用引號標(biāo)注; 注釋標(biāo)識為#

2. yaml文件數(shù)據(jù)結(jié)構(gòu)

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

鍵值對用冒號 “:” 結(jié)構(gòu)表示,冒號與值之間需用空格分隔

數(shù)組:一組按序排列的值(簡稱 '序列或列表')

數(shù)組前加有 “-” 符號,符號與值之間需用空格分隔

純量(scalars):單個的、不可再分的值(如:字符串、bool值、整數(shù)、浮點數(shù)、時間、日期、null等)

None值可用null可 ~ 表示

二、python中讀取yaml配置文件

1. 前提條件

python中讀取yaml文件前需要安裝pyyaml和導(dǎo)入yaml模塊:

使用yaml需要安裝的模塊為pyyaml(pip3 install pyyaml); 導(dǎo)入的模塊為yaml(import yaml)

2. 讀取yaml文件數(shù)據(jù)

python通過open方式讀取文件數(shù)據(jù),再通過load函數(shù)將數(shù)據(jù)轉(zhuǎn)化為列表或字典;

import yamlimport osdef get_yaml_data(yaml_file): # 打開yaml文件 print('***獲取yaml文件數(shù)據(jù)***') file = open(yaml_file, ’r’, encoding='utf-8') file_data = file.read() file.close() print(file_data) print('類型:', type(file_data)) # 將字符串轉(zhuǎn)化為字典或列表 print('***轉(zhuǎn)化yaml數(shù)據(jù)為字典或列表***') data = yaml.load(file_data) print(data) print('類型:', type(data)) return datacurrent_path = os.path.abspath('.')yaml_path = os.path.join(current_path, 'config.yaml')get_yaml_data(yaml_path)'''***獲取yaml文件數(shù)據(jù)***# yaml鍵值對:即python中字典usr: mypsw: 123455類型:<class ’str’>***轉(zhuǎn)化yaml數(shù)據(jù)為字典或列表***{’usr’: ’my’, ’psw’: 123455}類型:<class ’dict’>'''

3. yaml文件數(shù)據(jù)為鍵值對

(1)yaml文件中內(nèi)容為鍵值對:

# yaml鍵值對:即python中字典usr: mypsw: 123455s: ' abcn'

python解析yaml文件后獲取的數(shù)據(jù):

{’usr’: ’my’, ’psw’: 123455, ’s’: ’ abcn’}

(2)yaml文件中內(nèi)容為“鍵值對’嵌套'鍵值對'

# yaml鍵值對嵌套:即python中字典嵌套字典usr1: name: a psw: 123usr2: name: b psw: 456

python解析yaml文件后獲取的數(shù)據(jù):

{’usr1’: {’name’: ’a’, ’psw’: 123}, ’usr2’: {’name’: ’b’, ’psw’: 456}}

(3)yaml文件中“鍵值對”中嵌套“數(shù)組”

python解析yaml文件后獲取的數(shù)據(jù):

# yaml鍵值對中嵌套數(shù)組usr3: - a - b - cusr4: - b

python解析yaml文件后獲取的數(shù)據(jù):

{’usr3’: [’a’, ’b’, ’c’], ’usr4’: [’b’]}

4. yaml文件數(shù)據(jù)為數(shù)組

(1)yaml文件中內(nèi)容為數(shù)組

# yaml數(shù)組- a- b- 5

python解析yaml文件后獲取的數(shù)據(jù):

[’a’, ’b’, 5]

(2)yaml文件“數(shù)組”中嵌套“鍵值對”

# yaml'數(shù)組'中嵌套'鍵值對'- usr1: aaa- psw1: 111 usr2: bbb psw2: 222

python解析yaml文件后獲取的數(shù)據(jù):

[{’usr1’: ’aaa’}, {’psw1’: 111, ’usr2’: ’bbb’, ’psw2’: 222}]

5. yaml文件中基本數(shù)據(jù)類型:

# 純量s_val: name # 字符串:{’s_val’: ’name’}spec_s_val: 'namen' # 特殊字符串:{’spec_s_val’: ’namen’num_val: 31.14 # 數(shù)字:{’num_val’: 31.14}bol_val: true # 布爾值:{’bol_val’: True}nul_val: null # null值:{’nul_val’: None}nul_val1: ~ # null值:{’nul_val1’: None}time_val: 2018-03-01t11:33:22.55-06:00 # 時間值:{’time_val’: datetime.datetime(2018, 3, 1, 17, 33, 22, 550000)}date_val: 2019-01-10 # 日期值:{’date_val’: datetime.date(2019, 1, 10)}

6. yaml文件中引用

yaml文件中內(nèi)容

animal3: &animal3 fishtest: *animal3

python讀取的數(shù)據(jù)

{’animal3’: ’fish’, ’test’: ’fish’}

三、python中讀取多個yaml文檔

1. 多個文檔在一個yaml文件,使用 --- 分隔方式來分段

如:yaml文件中數(shù)據(jù)

# 分段yaml文件中多個文檔---animal1: dogage: 2---animal2: catage: 3

2. python腳本讀取一個yaml文件中多個文檔方法

python獲取yaml數(shù)據(jù)時需使用load_all函數(shù)來解析全部的文檔,再從中讀取對象中的數(shù)據(jù)

# yaml文件中含有多個文檔時,分別獲取文檔中數(shù)據(jù)def get_yaml_load_all(yaml_file): # 打開yaml文件 file = open(yaml_file, ’r’, encoding='utf-8') file_data = file.read() file.close() all_data = yaml.load_all(file_data) for data in all_data: print(data)current_path = os.path.abspath('.')yaml_path = os.path.join(current_path, 'config.yaml')get_yaml_load_all(yaml_path)'''結(jié)果{’animal1’: ’dog’, ’age’: 2}{’animal2’: ’cat’, ’age’: 3}'''

四、python對象生成yaml文檔

1. 直接導(dǎo)入yaml(即import yaml)生成的yaml文檔

通過yaml.dump()方法不會將列表或字典數(shù)據(jù)進(jìn)行轉(zhuǎn)化yaml標(biāo)準(zhǔn)模式,只會將數(shù)據(jù)生成到y(tǒng)aml文檔中

# 將python對象生成yaml文檔import yamldef generate_yaml_doc(yaml_file): py_object = {’school’: ’zhang’, ’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)'''結(jié)果school: zhangstudents: [a, b]'''

2. 使用ruamel模塊中的yaml方法生成標(biāo)準(zhǔn)的yaml文檔

(1)使用ruamel模塊中yaml前提條件

使用yaml需要安裝的模塊:ruamel.yaml(pip3 install ruamel.yaml); 導(dǎo)入的模塊:from ruamel import yaml

(2)ruamel模塊生成yaml文檔

def generate_yaml_doc_ruamel(yaml_file): from ruamel import yaml py_object = {’school’: ’zhang’, ’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)'''結(jié)果school: zhangstudents:- a- b'''

(3)ruamel模塊讀取yaml文檔

# 通過from ruamel import yaml讀取yaml文件def get_yaml_data_ruamel(yaml_file): from ruamel import yaml file = open(yaml_file, ’r’, encoding=’utf-8’) data = yaml.load(file.read(), Loader=yaml.Loader) file.close() print(data)current_path = os.path.abspath('.')yaml_path = os.path.join(current_path, 'dict_config.yaml')get_yaml_data_ruamel(yaml_path)

以上就是詳解Python yaml模塊的詳細(xì)內(nèi)容,更多關(guān)于Python yaml模塊的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷综合激情| 巨乳诱惑日韩免费av| 日本中文字幕不卡| 日本va欧美va瓶| 麻豆极品一区二区三区| 久久亚洲精精品中文字幕| 国产成人免费av一区二区午夜| 日韩成人a**站| 国产精品成人国产| 97国产成人高清在线观看| 99精品美女| 中文字幕亚洲在线观看| 美腿丝袜亚洲一区| 亚洲手机在线| 日韩激情综合| av中文字幕在线观看第一页| 在线国产一区二区| 欧美综合社区国产| 成人日韩精品| 亚洲字幕久久| 另类小说一区二区三区| 亚洲电影在线| 欧美自拍一区| 日韩欧美不卡| 亚洲区第一页| 日韩欧美国产精品综合嫩v| 久色成人在线| 成人精品视频| 亚洲免费专区| 黑人精品一区| 日韩不卡一区二区三区 | 国产精品观看| 不卡一区综合视频| 国产精品成人一区二区网站软件| 亚洲91久久| 国产精品99久久免费| 国产精品久久久久av电视剧| 日韩精品五月天| av亚洲免费| 麻豆极品一区二区三区| 久久亚洲图片| 日韩在线免费| 久久狠狠久久| 国产农村妇女精品一区二区| 成人午夜在线| 欧美在线观看天堂一区二区三区| 蜜臀av免费一区二区三区| 捆绑调教美女网站视频一区| 老司机久久99久久精品播放免费| 精品中文在线| 91成人在线精品视频| 一本一道久久a久久精品蜜桃| 国产精品久久久久久久久久妞妞 | av亚洲在线观看| 国内揄拍国内精品久久| 日韩精品免费观看视频| 欧美日韩日本国产亚洲在线| 樱桃视频成人在线观看| 国产精久久久| 欧美日韩中文| 麻豆精品网站| 久久国产影院| 成人污污视频| 麻豆久久一区二区| 国产日本久久| 欧美日韩xxxx| 91九色综合| 日韩精品成人在线观看| 丝袜a∨在线一区二区三区不卡 | 久久婷婷一区| 日韩啪啪电影网| 精品理论电影在线| 国产日韩欧美三区| 午夜在线播放视频欧美| 欧美日韩色图| 91精品啪在线观看国产18| a日韩av网址| 亚洲精品**中文毛片| 国产69精品久久| 精品国产18久久久久久二百| 国产精品资源| 国产精品探花在线观看| 久久国产欧美日韩精品| **爰片久久毛片| 国产亚洲精品美女久久| 国产欧美69| 久久精品国内一区二区三区| 国产精品宾馆| 欧美精品导航| 久久精品伊人| 国产欧美一区二区三区精品酒店| 国产精品夜夜夜| 麻豆91精品视频| 四虎国产精品免费观看| 日韩精品不卡一区二区| 久久久久久黄| 欧美日韩在线观看视频小说| 一区二区三区视频免费观看| 狠狠久久婷婷| 蜜桃视频一区二区三区| 日韩中文字幕一区二区高清99| 日韩久久99| 国产精品igao视频网网址不卡日韩 | 蜜桃tv一区二区三区| 国产成人1区| 欧洲av一区二区| 亚洲精品电影| 亚洲v天堂v手机在线| 蜜臀91精品一区二区三区| 亚洲+小说+欧美+激情+另类| 久久精品99国产精品日本| 久久av日韩| 中文另类视频| 人人精品人人爱| 欧美日韩一区二区三区不卡视频| 国产欧美日本| 欧美黄色网页| 亚洲伊人精品酒店| 国产欧美另类| 久久美女精品| 视频一区日韩精品| 精品视频网站| 免费欧美一区| 日本亚州欧洲精品不卡| 日本精品黄色| 日本欧美在线看| 狂野欧美性猛交xxxx| 精品一区在线| 国产精品久久久久久久久久齐齐 | 久久青草久久| 亚洲专区视频| 国产白浆在线免费观看| 香蕉精品999视频一区二区| 国产精品一区毛片| 激情久久婷婷| 国产精品啊v在线| 成人av二区| 国产精品一区三区在线观看| 桃色av一区二区| 亚洲精品大全| 亚洲一级少妇| 亚洲人妖在线| a天堂资源在线| 日韩视频1区| 色老板在线视频一区二区| 日本色综合中文字幕| 99视频精品全国免费| 日韩av电影一区| 伊人久久大香线蕉av不卡| 欧美日韩一区二区三区不卡视频| 免费在线小视频| 91国内精品| 精品91久久久久| 精品少妇av| 午夜精品影视国产一区在线麻豆| 蜜臀久久精品| 青青草精品视频| 中文亚洲欧美| 日韩中文视频| 欧美aaaaaa午夜精品| 免费视频一区二区| 99精品国产一区二区三区| 麻豆精品少妇| 日韩欧美中文字幕一区二区三区| 国产91一区| 国产网站在线| 欧美黄页在线免费观看| 综合国产精品| 亚洲大片在线| www.九色在线| 免费在线观看一区| 中文字幕av亚洲精品一部二部| 91精品国产乱码久久久久久久| 免费在线欧美黄色| 日韩av网站在线免费观看| 欧美日韩四区| 久久精品高清| 日韩不卡在线| 日韩一区电影| 国产不卡人人| 精品免费av| 精品久久久久久久| 久久xxx视频| 国产精品亚洲二区| 日韩1区2区3区| 亚洲三级视频| 国产偷自视频区视频一区二区| 999久久久免费精品国产| 91中文字幕精品永久在线| 国产精品视频一区二区三区综合| 四虎精品永久免费| 亚洲综合激情在线| 亚洲免费一区三区| 中文字幕一区二区三区日韩精品| 黄色成人91| 国产精品日韩| 日韩精品一二三区| 亚洲精品乱码| 日本午夜精品久久久| 91精品美女|