python生成yaml文件_Python I/O ————yaml文件操作

这两天玩欧冠数据, 看到数据格式是.yml结尾的文件, 就查了下什么是yaml文件,Python怎么操作

yaml文件简述

yaml: Yet Another Markup Language, 一种基于Unicode容易阅读的、与脚本交互的用于表达资料序列的编程语言。类似于XML,但语法比XML简单得多

适用场景:

A、脚本语言    B、序列化        C、配置文件:yaml比XML好编写,比ini文件功能强,但不同语言数据流不建议用。

优缺点:

A、易于阅读

B、可移植性

C、匹配敏捷的本机数据结构

D、单程处理

E、表现力和可扩展性 + 易于实现和引用

Python操作

读操作:

yaml.load()

创建 yaml文件 "1.yml", 写入如下数据:

name: Tom Smith

age:37spouse:

name: Jane Smith

age:25children:-name: Jimmy Smith

age:15

-name1: Jenny Smith

age1:12

In [21]: with open('1.yml', 'r') as f:

...: yaml_obj= yaml.load(f, Loader=yaml.SafeLoader)

...:

In [22]: yaml_obj

如果使用yaml.load(f) ,会报warning:  YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. (就是提示 直接load是不安全的, 具体load参数可以参考 https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation#footnotes)

yaml.load_all() #生成一个迭代器

写操作:

yaml.dump(data_obj, file_obj) #类似于pickle

yaml.dump_all([data1_obj, data2_obj], file_obj) #多个数据对象,以流形式写入#示例, 环境是ipython,就会有"..:" 出现:

data_dict ={

...:"name": "leron james",

...:"age": 35,

...:"hobby": ["dancing", "rap", "basketball"]

...: }

f= open('1.yml', 'w')

yaml.dump(data_dict, f)

yaml语法简述

基本语法

A、大小写敏感

B、缩进表示层级关系,且: 缩进只使用空格,不适用Tab; 缩进多少空格不重要, 重要的是同层元素左对齐

C、# 后表示注释,到行尾都是注释,且只能单行注释

D、: 冒号表示 k-v关系,形式:  key:value

E、破折号“-”后加空格,表示列表:

例如:

- name

- age

- sex

就是Python里的 ["name", "age", "sex"]

F、简单数据(scalars,标量数据)可以不使用引号括起来,包括字符串数据。用单引号或者双引号括起来的被当作字符串数据,在单引号或双引号中使用C风格的转义字符

yaml -> Python  dict

yaml:

name: lebron james

age:36sex:male

Python dict:

{"name": "lebron james", "age":36, "sex":"male"}

yaml list ->  Python list

yaml :-name-age-sex#Python list

["name", "age", "sex"]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值