yaml/json

区别:
1、dump(),load() 处理的是json文件
2、dumps(),loads() 处理的是字符串

json.dumps() 将字典类型转化成字符串类型
json.loads()   将字符串类型转化成字典类型
json.dump()  将dict类型的数据转成str,并写入到json文件
json.load()    将从json文件中读取数据

 

f是文件流

data = yaml.load(f)

 

YAML

    1. 从yaml中读取出的数据可以直接为json或列表
    2. 编写数据语法简单

    规则

    1.大小写敏感
    2.使用缩进表示层级关系
    3.缩进时不允许使用Tab键,只允许使用空格。
    4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 支持的数据结构
     1.对象:键值对的集合
     2.数组:一组按次序排列的值,又称为列表(list)
     3.纯量(scalars):单个的、不可再分的值
  • 锚点&和引用*
     锚点:标注一个内容,锚点名称自定义
     引用:使用被标注的内容<<: *锚点名

1.4 数据类型
1. 字典
语法:
1). 直接以字典的形式编写 {"name":"张三","age":18}
2). 键名+冒号+空格+值
如: name: "张三"
提示:
1. 如果值为字典或列表,必须换行+缩进 
注意事项:
1. 需求达到字典格式,字典格式一定确保准确。
2. 键值对无顺序可言,因为在字典中不需要顺序。
3. yaml内的语法是一个完整串,不可多个串。
2. list
语法:
1). 直接以列表形式编写 [1,2,3]
2). 杠(-)+空格( )+值 如: - "张三"
相同级别有几个,就有几个杠(-),值为字典或列表换行+缩进。
3. 纯量
1. 字符串:name: "张三" 注意;整型带引号为字符串
2. 整型: 如:num: 30 注意:不带引号
3. 浮点型: 如:18.234 最多小数位为15位
4. 布尔型:
1). TRUE/FALSE
2). true/false
3). True/False
5. 空
1). Null
2). NULL
3). (空格)
4). ~
5). null
6. 日期:
1). 2018-12-12 12:12:12
2). 2018-12-12 12:12:12.999999
4. 锚点 
定义:&imp
位置:键名后定义 如: name: &imp
引用:<<: *imp
注意:
1. 锚点键名不能和被引用键名相同
1.5 安装
命令:pip install pyyaml

1.6 yaml文件读取
1. 方法:yaml.load(stream)
2. 操作:

with open('../Data/login_data.yaml', 'r', encoding='utf-8') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)


1.7 yaml文件写入
1. 方法:yaml.dump(data,stream)
data:为要写入的串
stream: 写入**.yaml文件名及目录
2. 操作:

data = {"name": "li", "age": 18}

with open("./02.yaml", "w", encoding="utf-8") as f:
yaml.dump(data, f, allow_unicode=True)


3. 注意:
allow_unicode:使用Unicode编码,否则写入为乱码。
encoding="utf-8":不设置的话,读取格式为乱码(低pycharm版本)。 

 

#{name: li, age: 18, datas: {height: 180, weight: 130}}

#neme: "li"
#age: 18
#datas:
# height: 180
# weight: 130

#[1, 2, 3]
#- 1
#- 2
#- 3

#[1, 2, [3, [4,5]], 6]
#[1, 2, [3, [4, 5]], 6]

#- 1
#- 2
#-
# - 3
# -
# - 4
# - 5
#- 6

#[1, 3, {'a': 0, 'b': ['d', 'l', 'm', {'c': 0, 8: 'l'}, 't']}, 9]
- 1
- 3
-
a: 0
b:
- d
- l
- m
-
c: 0
8: l
- t
- 9
posted @ 2021-12-12 22:39  zxy_ang  阅读(329)  评论(0)    收藏  举报