python yaml配置文件_Python3操作配置文件 —— YAML模块

1、语法大小写敏感

缩进表示层级,缩进的长度没有限制,不允许使用Tab键,只能使用空格

#可用来表示注释

支持字典, 列表, 纯量

2、字典表示

python中写法:

"key": {

"child_key1":"value1",

"child_key2":"value2"

}

YAML中写法:key:value

# 常规写法

key:

child_key1: value1

child-key2: value2

# 流失(flow)写法

key: {child_key1: value1, child_key2: value2}

# 复杂的价值对,一个问号 加一个空格代表一个复杂的key,配合一个冒号加一个空格 代表一个value

?

- complex_key1

- complex_key2

:

- complex_value1

- complex_value2

3、列表

python中写法:

{'hobby': ['a1', 'a2']}

[['a1', 'a2']]

YAML中写法:短线+一个空格

hobby:

- python

- test

-

- python

- test

# 行内写法:

hobby:[python, test]

4、纯量

支持常量:整数、浮点数、字符串、NULL、日期、布尔值、时间

YAML中写法样例:

int:

- 123

- 0b1010_0111_0100_1010_1110 # 二进制表示

float:

- 3.14159

- 6.6e+5 # 可使用科学计数法

string:

- 'Hello world!' # 可使用双引号或单引号包裹特殊字符,双引号不会对特殊字符转义。

- newline

newline2 # 字符串可拆成多行,每一行会被转化成一个空格

null:

nodeName: 'node'

parent: ~ # 使用 ~ 表示null

boolean:

- TRUE # true 或True都可以

- FALSE # false 或False都可以

date:

- 2018-12-29 # 日期必须使用ISO 8601格式,即yyyy-MM-dd

datetime:

- 2018-12-29T18:43:21+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

5、特殊符号:

分块:

表示一个分块的开始和结束,等价于在一个文件中写了两个配置项

# ---表示开始 ...表示结束

---

time: 19:13:09

player: Tim

action: strike

...

---

time: 20:14:45

player: Lily

action: grand

...

类型转换:

string:

- !!str 123456

- !!str true

引用:

重复的东西,用&来表示锚点定义, *来表示锚点引用

YAML中写法:

hr:

- Mark McGwire

- &SS Sammy Sosa

rbi:

- *SS

- Ken Griffey

# 引用数组

default: &default

- Mark McGwire

- Sammy Sosa

hr: *default

合并引用:

merge:

- &CENTER { x: 1, y: 2 }

- &LEFT { x: 0, y: 2 }

- &BIG { r: 10 }

- &SMALL { r: 1 }

sample1:

<<:>

r: 10

# 等价于 sample1={r=10, y=2, x=1}

sample2:

<< : [ *CENTER, *BIG ]

other: haha

# 等价于 sample2={other=haha, x=1, y=2, r=10}

sample3:

<< : [ *CENTER, *BIG ]

r: 100

# 等价于 sample3={r=100, y=2, x=1} r值被覆盖

延续换行:

python中写法:

{'accomplistment': 'Mark set a major league home run record in 1998.'}

YAML中写法:

acomplistment: >

Mark set a major league

home run record in 1998.

保留换行:

YAML中写法

status: |

65 Home Runs

0.278 Batting Average

6、文件读写load(),解析yaml文档,返回一个Python对象;

load_all(),如果是string或文件包含几块yaml文档,可用该方法来解析全部的文档,生成一个迭代器;

dump(),将一个Python对象生成为一个yaml文档;

dump_all(),将多个段输出到一个yaml文档中。

# 读

# 用open方法打开直接读取

f = open(ymlPath, 'r')

cfg = f.read()

print(type(cfg)) # 读取的结果是 字符串

print(cfg)

d = yaml.load(cfg) # 用load方法转字典 d = yaml.load_all(cfg)

print(d)

print(type(d))

# 写

py_object = {'school': 'zhang',

'students': ['a', 'b']}

file = open(yaml_file, 'w', encoding='utf-8')

yaml.dump(py_object, file)

file.close()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值