python 操作yaml文件
2022/5/31 1:24:14
本文主要是介绍python 操作yaml文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、环境安装
安装:pip install pyyaml
使用:import yaml
二、yaml文件
-
基本语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只能使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- # 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样
- yaml支持的数据结构有三种
- 对象:键值对的集合,又称映射/哈希/字典
- 数组:一组按次序排列的值,又称为序列/列表
- 纯量:单个的、不可再分割的值,字符串、布尔值、整数、浮点数、Null、时间、日期
#整型 num: 200 #浮点型 pi: 3.1415926 #布尔型 enable: true #TRUE, true都可以 switch0ff: false #FALSE,false都可以 #字符串 name: Ken fullname: "Ken KK" #单引号,双引号可以修饰特殊字符 #日期 date: 2021-05-21 #时间 #格式为ISO 8601,日期和时间用T连接,+表示时区,示例为东八区 time: 2021-05-21T12:00:00+08:00 #Null object: ~ #~表示为null,即空的意思
map数据格式:
maps: name: zhangsan age: 12
list数据结构:
# 数组 icons: - aaa #数组第0个元素 - bbb #数组第一个元素 # list ages: - 10 - 20
也可以表示为:比较随意,只要相同层级的元素左侧对齐即可
# 数组 icons: - aaa #数组第0个元素 - bbb #数组第一个元素 # list ages: - 10 - 20
对象数据结构:
#对象 person: age: 12 maps: aa: aaa bb: bb host: 127.0.0.1
三、python读取yaml文件
yaml文件:
mysql: host: 127.0.0.1 port: 3306 db: mysql pwd: mysql redis: host: 127.0.0.1 port: 3679 db: redis pwd: redis
读取yaml文件:
import yaml import json yamlPath = r"E:\code\config.yml" f = open(yamlPath,'r',encoding='utf-8') data = yaml.load(f, Loader=yaml.FullLoader) print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ':'), ensure_ascii=False))
with语句读取:
import yaml yamlPath = r"E:\code\config.yml" with open(file=yamlPath, mode="rb") as f: infos = yaml.load(f, Loader=yaml.FullLoader) print(infos)
四、写入yaml文件:
import yaml yamlPath = r"E:\code\config.yml" f = open(yamlPath,'a',encoding='utf-8') data = { "username": "zs", "age": 18, "hobby": ["Basketball", "eat", True] } yaml.dump(data, f)
五、案例:
import yaml desired_caps = { 'platformName': 'Android', # 被测手机是安卓 'platformVersion': 'platformVersion', # 手机安卓版本 'deviceName': 'deviceName', # 设备名,安卓手机可以随意填写 'appPackage': 'com.mobivans.onestrokecharge', # 启动APP Package名称 'appActivity': 'com.mobivans.onestrokecharge.activitys.MainActivity', # 启动Activity名称 'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True 'resetKeyboard': True, # 执行完程序恢复原来输入法 'noReset': True, # 不要重置App 'newCommandTimeout': 60000, 'udid': {"devicesname":"127.0.0.1:62001"} } # 将以上字典写入到yaml文件 with open('desired_caps.yaml', 'w', encoding='utf-8') as f: # 将字典写入到yaml文件中 yaml.dump(desired_caps, f)
六、常用yaml文件格式
# 注释 # 1-1、字典 键: 值 username: xiaoming # 冒号后面是空格 password: 123456 info: 配置 # 中文---不建议使用,有可能会乱码 # 1-2、字典嵌套 NAME_PSW: name:xiaoming password:123456 # 2-1、列表格式 -10 -20 -30 # 2-2、列表嵌套 -10 -20 - -100 -200 # 3-1、列表中套字典 -10 -20 - name: tom password: 123456 # 4-1、字典套列表 name: TOM info: -10 -20 -30 # 5-1、引号 如果是有英文字母或者中文的,不加引号也是字符串 info: "HELLO word" # 引号可以不加 # 5-2、什么加引号:如果有特俗字符\n 不加引号就原字符样式输出 如果显示特殊字符效果:就加双引号 info: "HELLO\nwoord" # 6-1、引用 一个数据可以使用很多地方,使用变量 # & 变量名 定义变量 # *变量名 引用变量 name: &a tom name1: *a # 7-1、能不能多个YAML 写在一起,有字典也有列表 ,加分隔符 --- -10 -20 -30 --- name: sq # 8-1、yamL文件可以有YAML DATA: conf.yaml
七、读取yaml文件时报TypeError错误
解决方式:
yaml.safe_load(file.read()) yaml.load(file.read(), Loader=yaml.FullLoader) yaml.load(file.read(), Loader=yaml.CLoader)
这篇关于python 操作yaml文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python