PyYaml是Python的一个专门针对YAML文件操作的模块
方法说明yaml.load(yaml_str, Loader=yaml.SafeLoader)解析yaml_str,返回一个对象Loader有四种模式:BaseLoader: 仅加载最基本的YAML;SafeLoader: 安全地加载YAML语言的子集。建议加载不可信的输入;FullLoader: 加载完整的YAML语言。避免执行任意代码。当前(PyYAML 5.1)是yaml.load(input)(在发出警告之后)调用的默认加载程序。UnsafeLoader:(也要求Loader向后兼容)不受信任的数据输入可以轻易利用的原始Loader代码。yaml.safe_load快捷“糖”方式, 等效于yaml.load(yaml_str, Loader=yaml.SafeLoader)yaml.full_load快捷“糖”方式, 等效于yaml.load(yaml_str, Loader=yaml.FullLoader)yaml.unsafe_load快捷“糖”方式, 等效于yaml.load(yaml_str, Loader=yaml.UnsafeLoader)yaml.load_all(ymlfile, Loader=yaml.SafeLoader)生成一个迭代器,如果string或文件包含几块yaml文档,可以使用yaml.load_all来解析全部的文档。yaml.dump(json_data)将一个python对象生成为yaml文档,有第二个参数,可以直接把内容写入到对应的文件中yaml.dump_all()将多个段输出到一个文件中load方法实例:
import yaml yaml_str = """ name: 一条大河 age: 1956 job: Singer """ y = yaml.load(yaml_str, Loader=yaml.SafeLoader) print(y)运行结果:
{'name': '一条大河', 'age': 1956, 'job': 'Singer'}load_all方法实例:
yaml_test.yaml文档内容
import yaml filename = "D:\\test\\yaml_test.yaml" with open(filename, 'r', encoding='utf-8') as ymlfile: cfg = yaml.load_all(ymlfile, Loader=yaml.SafeLoader) for data in cfg: print(data)运行结果:
{'name': 'qiyu', 'age': '20岁'} {'name': 'qingqing', 'age': '19岁'}dump实例:
import yaml json_data = {'name': '一条大河', 'age': 1956, 'job': ['Singer','Dancer']} y = yaml.dump(json_data, default_flow_style=False).encode('utf-8').decode('unicode_escape') print(y)运行结果:
age: 1956 job: - Singer - Dancer name: "\u4E00\u6761\u5927\u6CB3"使用dump()传入参数,可以直接把内容写入到yaml文件:
import yaml filename = "D:\\test\\yaml_test.yaml" json_data = {'name': '一条大河', 'age': 1956, 'job': ['Singer', 'Dancer']} with open(filename, 'w') as f: y = yaml.dump(json_data, f)运行结果: yaml.dump_all()实例:
import yaml obj1 = {"name": "river", "age": 2019} obj2 = ["Lily", 1956] obj3 = {"gang": "ben", "age": 1963} obj4 = ["Zhuqiyu", 1994] filename = "D:\\test\\yaml_write.yaml" with open(filename, 'w', encoding='utf-8') as f: y = yaml.dump([obj1, obj2, obj3, obj4], f)运行结果:
