参考博客1
参考博客2
参考博客3
字典:用:表示字典的一一对应 用退格表示层级关系(不能用tab,只能用空格,对齐表示相同层级): 后必须有空格才代表字典
{c:{a:1,b:2}}
c:
a: 1
b: 2
yaml简单语法
---
dict:
nb1:
user: admin
psw: 123456
--- #分隔 一个文件内可以是多个,但读取时需要使用load_all()读取
list: #:代表字典
- user: admin #-代表是数组
- psw : 123456
- bool: True #bool用True或False表示
- bool: False
- '~': None ~代表None #~表示None
- 啊 :
- '!!代表强制转换类型' : #!!可以强制转换数据类型
- !!str 123
- !!str True
- time1: 2018-04-18t21:59:43.10+08:00 #时间
- date1: 2018-04-01
复杂: #用[]表示数组 {}表示字典
[
{a: 1},
{b: 2}
]
?[a,b,c,v]: #?表示复杂的键
复杂
yaml|: | #| 代表所有回车都显示为\n
czdasd
asfdas
afas
fasfas
fas
f
asf
yaml>: > #>代表所有回车都显示为空格
czdasd
asfdas
afas
fasfas
fas
f
asf
yaml: "
sadas
asdas
da
sd
ad"
#双引号,单引号,空格都将显示为一行,测试仍为空格
yaml1:
- &ss zzz #设定一个变量
yaml2:
*ss #引用这个变量
hr:
- Mark McGwire
# Following node labeled SS
- &SS Sammy Sosa # 定义要复制的数据
rbi:
- *SS # Subsequent occurrence 这里是数据复制目标
- Ken Griffey
l-explicit-document
yaml模块
pip install pyyaml
import os
import yaml
def yaml_to():
file_dir = os.path.dirname(os.path.realpath(__file__)) #os.path.realpath(__file__)获取该脚本路径带脚本名,os.path.dirname(os.path.realpath(__file__))该路径的文件夹路径
yaml_dir = os.path.join(file_dir, 'my_yaml') #在文件夹路径后加入yaml文件名
with open(yaml_dir, 'r') as f: #打开文件
d = f.read() #读取文件查看文件内容的原始状态,是str
f.seek(0, 0) #将读取后文件的指针放回到起始位置
c = yaml.load_all(d) #用yaml包读取 ,也可以直接转化相应格式的字符串
return c
def to_yaml(p):
file_dir = os.path.dirname(os.path.realpath(__file__))
yaml_dir = os.path.join(file_dir, 'to_yaml')
with open(yaml_dir,'w',encoding='utf-8') as f:
c = yaml.dump_all(p,allow_unicode=True) #将python对象转换为yaml格式 allow_unicode代表是否转换为Unicode编码,中文编码有关
f.write(c) #写入文件
if __name__ == '__main__':
yaml_ = yaml_to()
print(yaml_)
# for i in yaml_:
# print('i:',i)
to_yaml(yaml_)
当yaml文件内有—隔离时只能用load_all读取 python的迭代器对象只能由dump_all转换