python讀取YAML檔案步驟

2021-10-09 07:59:33 字數 3284 閱讀 1413

安裝 pyyaml 模組 :pip install pyyaml

編寫**

#存在 test.yml 檔案,內容如下:

name: xiaohong

age: 24

books:

- 吶喊

- 朝花夕拾

讀取yaml**如下:

import yaml

file = open('test.yaml', 'r', encoding="utf-8")

#使用檔案物件作為引數

data = yaml.load(file)

print(data)

以上**執行結果如下:

型別: 'dict'>

for full details.

data = yaml.load(file)

process finished with exit code 0

會出現警告,原因是yaml 5.1版本後棄用了yaml.load(file)這個用法,因為覺得很不安全,5.1版本之後就修改了需要指定loader,通過預設載入​​器(fullloader)禁止執行任意函式,該load函式也變得更加安全。建議**如下:

import yaml

file = open('test.yaml', 'r', encoding="utf-8")

#讀取檔案中的所有資料

file_data = file.read()

file.close()

#指定loader

data = yaml.load(file_data,loader=yaml.fullloader)

print(data)

#存在 test.yml 檔案,內容如下:

---name:

xiaoli

age: 22

---name:

xiaohuang

age: 21

load_all()方法使用**如下:

import yaml

file = open('test.yaml', 'r', encoding="utf-8")

#datas為load_all()方法返回的迭代器物件

datas = yaml.load_all(file,loader=yaml.fullloader)

fordata in datas:

print(data)

本例中的yaml檔案使用 --- 分為兩段,load_all()方法會建立乙個迭代器物件,分開存放兩段資料。

import yaml

data =

data_yaml = yaml.dump(data).encode('utf-8').decode('unicode_escape')

print(data_yaml)

以上示例中.encode('utf-8').decode('unicode_escape') 是先編碼為'utf-8',然後解碼(或稱為反編碼)成漢字。大家如對此不熟悉,可以逐個去掉.encode('utf-8').decode('unicode_escape') 看顯示效果。

import yaml

data =

yaml_file = open('test.yaml','w')

#yaml_file作為dump()第二個引數,是乙個可寫狀態的檔案物件

yaml.dump(data, yaml_file ,default_flow_style=false,encoding='utf-8',allow_unicode=true)

yaml_file.flush()

yaml_file.close()

testcases.yaml

name: junxi

age: 18

spouse:

name: rui

age: 18

children:

- name: chen you

age: 3

- name: ruo xi

age: 2

read.py

import yaml

f = open('testcases.yaml','r',encoding="utf-8")

file=f.read()

f.close()

data=yaml.load(file,loader=yaml.fullloader)

print(data)

# coding:utf-8

import yaml

import os

# 獲取當前指令碼所在資料夾路徑

curpath = os.path.dirname(os.path.realpath(__file__))

# 獲取yaml檔案路徑

yamlpath = os.path.join(curpath, "testcases.yaml")

# open方法開啟直接讀出來

f = open(yamlpath, 'r', encoding='utf-8')

cfg = f.read()

print(type(cfg)) # 讀出來是字串

print(cfg)

d = yaml.load(cfg,loader=yaml.fullloader) # 用load方法轉字典

print(d)

print(type(d))

-

url: /api/user/login

method: post

datail: 正常登陸

data:

mobile: 18380416336

password: 123456

- url: /api/user/login

method: post

datail: 密碼錯誤

data:

mobile: 18380416336

password: 111111

import yaml

f=open('login.yaml',encoding='utf-8')

cfg=f.read()

print(type(cfg)) # 讀出來是字串

print(cfg)

python讀取 YAML檔案

yaml在我的理解看來,它是一種資料的格式,他的格式跟json很相近,但是yaml支援注釋 1.物件名 健 空格 對。寫法一 desired caps platformname android devicename xiaomi mix platformversion 5.1 unicodekeyb...

python筆記 讀取yaml檔案

使用yaml.load 總是出現告警 yamlloadwarning calling yaml.load without loader is deprecated,as the default loader is unsafe.please read for full details.原因 yaml...

python讀取配置檔案yaml

yaml 一種非標記語言,可以簡單表達清單 列表等資料形態,檔案字尾為 yml 1.大小寫敏感 2.使用縮排表示層級關係 3.縮排不允許使用tab,只允許空格,但是對空格數不要求 4.表示注釋 key value 和value之間應該有空格 字典 name test age 12 列表 1,2 3 ...