Python Yaml 实际应用

简介

编程免不了要写配置文件,怎么写配置也是一门学问。

YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。

YAML在python语言中有PyYAML安装包。

YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

它的基本语法规则如下:

1、大小写敏感

2、使用缩进表示层级关系

3、缩进时不允许使用Tab键,只允许使用空格。

4、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

5、 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

YAML 支持的数据结构有三种:

1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

2、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

3、纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

1、环境搭建

执行命令:pip install pyyaml

注意:我是在pycharm中的 terminal(终端)直接执行了命令,当然还可以在命令行执行命令安装。

安装成功的效果,不报错!

2、Yaml 在Python中的使用

新建一个yaml文件

3、代码实现获取配置文件信息

# FileName : YamlDemo.py

# Author : Adil

# DateTime : 2017/12/29 12:00

# SoftWare : PyCharm

import yaml

import os

# 获取当前文件路径 D:/WorkSpace/StudyPractice/Python_Yaml/YamlStudy

print(filePath)

# 获取当前文件的Realpath D:\WorkSpace\StudyPractice\Python_Yaml\YamlStudy\YamlDemo.py

print(fileNamePath)

# 获取配置文件的路径 D:/WorkSpace/StudyPractice/Python_Yaml/YamlStudy\config.yaml

print(yamlPath)

# 加上 ,encoding='utf-8',处理配置文件中含中文出现乱码的情况。

f = open(yamlPath,'r',encoding='utf-8')

cont = f.read()

x = yaml.load(cont)

print(type(x))

print(x)

print(x['EMAIL'])

print(type(x['EMAIL']))

print(x['EMAIL']['Smtp_Server'])

print(type(x['EMAIL']['Smtp_Server']))

print(x['DB'])

print(x['DB']['host'])

print(x.get('DB').get('host'))

print(type(x.get('DB')))

打印输出结果如下:

4、代码实现写入配置文件

# 写入yaml 文件

# a 追加写入,w,覆盖写入

fw = open(yamlPath,'a',encoding='utf-8')

# 构建数据

data = {"cookie1":{'domain': '.yiyao.cc', 'expiry': 1521558688.480118, 'httpOnly': False, 'name': '_ui_', 'path': '/', 'secure': False, 'value': 'HSX9fJjjCIImOJoPUkv/QA=='}}

# 装载数据

yaml.dump(data,fw)

# 读取数据,获取文件

f = open(yamlPath,'r',encoding='utf-8')

# 读取文件

cont = f.read()

# 加载数据

x = yaml.load(cont)

# 打印数据

print(x)

# 打印读取写入的数据

print(x.get("cookie1"))

写入效果如图

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180816G1JX3O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券