笔记||Python3进阶之读取和写入yaml配置文件
yaml是专门用来写配置文件的语言,简洁强大,远比JSON格式方便,yaml在python语言中有PyYAML安装包。
- 首先需要pip安装:pip install pyyaml
- yaml基本语法规则:大小写敏感
使用缩进表示层级关系
缩进时不允许Tab键,只允许使用空格
# 表示注释
------------------------------------python代码读取yaml文件--------------------------------------
import yaml
import os
# 获取当前脚本所在文件夹路径
curpath = os.path.dirname(os.path.realpath(__file__))
# print(curpath)
# 获取yaml文件路径
yamlpath = os.path.join(curpath, "cfgyaml.yaml")
# open方法打开文件直接读出来
f = open(yamlpath, 'r', encoding='utf-8')
cfg = f.read()
print(type(cfg))
# print(cfg)
# 用load方法转字典
d = yaml.load(cfg)
print(type(d))
print(d)
---------------------------------cfgyaml.yaml文件内容如下--------------------------------------
# yaml中的数组,相当于python中的列表
- admin1: 123456
- admin2: 234567
- admin3: 345678
# yaml中的键值对,相当于python中的字典
# test1:
# user: username
# pw: 123456
---------------------------------------------------------------------------------------------------------------------------------------------------------
用yaml模块写入字典嵌套字典这种复杂的数据,会出现大括号{},不是真正的yaml文件数据,可以用ruamel模块解决。
安装:pip install ruamel.yaml
使用方法跟yaml差不多,只是在使用dump方法多一个参数:Dumper=yaml.RoundTripDumper
---------------------------python代码写入yaml文件----------------------------------
import os
from ruamel import yaml
# 将字典写入到yaml
desired_caps = {
'platformName': 'Android',
'platformVersion': '7.0',
'deviceName': 'ASRNW1111111111'
'appPackage': 'com.tencent.com',
'appActivity': 'ui.LauncherUI',
'automationName': 'Uiautomator2',
'unicodeKeyboard': True,
'resetKeyboard': True,
'noReset': True,
'chromeOptions': {'androidProcess': 'com.tencent.com'}
}
curpath = os.path.dirname(os.path.realpath(__file__))
yamlpath = os.path.join(curpath, "cfgyaml.yaml")
# 写入到yaml文件
with open(yamlpath, 'w', encoding="utf-8") as f:
yaml.dump(desired_caps, f, Dumper=yaml.RoundTripDumper)
--------------------------------------------------------------------------------------------------------------------
使用ruamel.yaml模块也能读yaml文件,使用方法相对之前的yaml.load方法多加了一个参数:Loader=yaml.Loader
如:
rea = open(yamlpath, 'r')
a = rea.load()
b = yaml.load(a, Loader=yaml.Loader)
print(b)
笔记||Python3进阶之读取和写入yaml配置文件的更多相关文章
- 转载-python学习笔记之输入输出功能读取和写入数据
读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Pytho ...
- 关于java读取和写入properties配置文件的内容
一般通过使用流的方式进行读取 代码示例如下: package com.zznode.transmit.util; import java.io.FileInputStream; import java ...
- Python学习笔记_从CSV读取数据写入Excel文件中
本示例特点: 1.读取CSV,写入Excel 2.读取CSV里具体行.具体列,具体行列的值 一.系统环境 1. OS:Win10 64位英文版 2. Python 3.7 3. 使用第三方库:csv. ...
- 笔记||Python3进阶之调用外部程序
像wget可以下载文件 ffmpeg可以切割.合并.转换.录制视频 free命令可以查看linux内存使用信息 python提供了库来调用外部程序.命令?> 最常见的两种方法: ①o ...
- 笔记||Python3进阶之装饰器
# 装饰器# 特征: 是用一个@开头的字符串# 装饰器通常用来装饰函数.或者类的方法# 被装饰后的函数,通常是在原有的函数基础上,会多出增加一点功能# 一般来说装饰器本身也是一个函数## def te ...
- Python学习笔记五(读取提取写入文件)
#Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...
- python读取并写入mat文件
用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...
- python读取yaml配置文件
支持多种语言:python.js.golang.java.c.c++ YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下 ...
- python聚类算法实战详细笔记 (python3.6+(win10、Linux))
python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念: 1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...
随机推荐
- 如何利用wx.request进行post请求
1,method 是 get 方式的时候,会将数据转换成 query string method 为 post 时,header为{"Content-Type": " ...
- [C++_QT] Error: Not a signal or slot declaration
问题: 在Qt工程中添加了一个新的窗口之后 一直报错 如下 单单从错误描述上看 是缺少信号或者槽 但是我确定没有缺少啊 然后第二个错误显示了一个mox_xxxx文件 然后我就去那个目录下去找那个文件 ...
- Flutter Container 组件、Text 组件详解
Text 组件 textAlign 文本对齐方式(center 居中,left 左对齐,right 右对齐,justfy 两端对齐) textDirection 文本方向(ltr 从左至右 ...
- JS-apply、call、bind
最近查看了很多关于apply的文章,就随手记录一下. Apply apply: 方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args) 方法能接收两个 ...
- i.MX RT1010之FlexIO模拟I2S外设
恩智浦的i.MX RT1010是跨界处理器产品,作为i.MX RT跨界MCU系列的一个新的切入点,i.MX RT1010是成本最低的LQFP封装方式与i.MX RT系列产品一贯的高性能和易用性的结合产 ...
- 「JSOI2015」送礼物
「JSOI2015」送礼物 传送门 看到这题首先想到分数规划. 我们发现对于当前区间,如果它的最大值和最小值不是分居区间的两个端点的话,那么我们显然可以把两端多出去的部分舍掉,因为,在区间最大值最小值 ...
- php redis 集群扩展类文件
<?php /** * redis集群驱动 */ namespace Common\Api; class RedisCluster{ protected $servers=array( '192 ...
- 操作系统OS - 阻塞(Blocking)非阻塞(Non-Blocking)与同步(Synchronous)异步(Asynchronous)
参考: http://blog.jobbole.com/103290/ https://www.zhihu.com/question/19732473/answer/23434554 http://b ...
- springboot @Select @Insert @Update @Delete
https://blog.csdn.net/qq_20867981/article/details/80641353 使用@Select.@Insert.@Update.@Delete注解代替xxxM ...
- lc 0226
目录 ✅ 232. 用栈实现队列 描述 解答 c py ✅ 496. 下一个更大元素 I 描述 解答 java another java ✅ 232. 用栈实现队列 https://leetcode- ...