安装:pip install pyyaml
使用:import yaml
#整型 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,即空的意思
maps: name: zhangsan age: 12
# 数组 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
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)
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)
# 注释 # 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.safe_load(file.read()) yaml.load(file.read(), Loader=yaml.FullLoader) yaml.load(file.read(), Loader=yaml.CLoader)