编程语言
首页 > 编程语言> > Python 操作 yaml 文件

Python 操作 yaml 文件

作者:互联网

Python 操作 yaml 文件

yaml的意思是:Yet Another Markup Language(仍是一种标记语言)

参考文章:https://blog.csdn.net/weixin_43831559/article/details/124850190

1.yaml 文件

语法特点:

数据类型:

1.1 对象

写法一: 对象键值对使用键:值冒号分割键值,特别注意,冒号后面(右边值前面)要有一个空格。

key: value

写法二:流式写法

key: {K1:v1,k2:v2}

写法三:缩进标识层级

database:
  port: 3306
  username: root

1.2 数组

-开头的行标识构成一个数组,-也需要跟一个空格,不然会被识别成字符串:

version: v1
ip:
  # 一行代表数组的一列项值
  - 127.0.0.1
  - 192.168.1.1

数组中存放键值对

commpaines:
-
 id: 1
 name: aa
-
 id: 2
 name: bb

image-20220807161559434

1.3 纯量

纯量即是单个值。类型如上述。

补充:锚点的使用。

&建立锚点,<<表示合并到当前数据,*引用锚点。

defaults: &defaults # 建立锚点defaults
  port: 3306
  ip: 127.0.0.1
  user: root
dev:
  port: 3307
  <<: *defaults # 将上述的数据合并到当前锚点的地方

image-20220807162521100

2.Python操作yaml

# 安装
pip install pyyaml

2.1 读取yaml 文件

import yaml

fp = open('./config.yaml','r',encoding='utf-8')
msg = yaml.load(fp,Loader=yaml.FullLoader)
fp.close()
print(msg)

image-20220807162715074

上下文写法:

with open('./config.yaml','r',encoding='utf-8')as fp:
    msg = yaml.load(fp,Loader=yaml.FullLoader)
    print(msg)

2.2 写入yaml文件

data = {
    'ip':'127.0.0.1',
    'port':'27017',
    'mysql':{
        'user':'mysql',
        'password':'aaaa'
    }
}
with open('./config.yaml','a',encoding='utf-8')as fp:
    yaml.dump(data,fp,allow_unicode=True)

image-20220807163425888

写入成功。但是写入的顺序是没有按照字典中的顺序写入,因为字典是无序的,虽然新版本的python进行了优化,也有可能是兼容性的问题,没有按照顺序进行写入。写入的时候是追加模式,有可能会出现重复值的情况,避免重复写入的问题。

继续努力,终成大器。

标签:fp,10,文件,Python,写入,yaml,键值,锚点
来源: https://www.cnblogs.com/Blogwj123/p/16559340.html