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配置文件的更多相关文章

  1. 转载-python学习笔记之输入输出功能读取和写入数据

    读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Pytho ...

  2. 关于java读取和写入properties配置文件的内容

    一般通过使用流的方式进行读取 代码示例如下: package com.zznode.transmit.util; import java.io.FileInputStream; import java ...

  3. Python学习笔记_从CSV读取数据写入Excel文件中

    本示例特点: 1.读取CSV,写入Excel 2.读取CSV里具体行.具体列,具体行列的值 一.系统环境 1. OS:Win10 64位英文版 2. Python 3.7 3. 使用第三方库:csv. ...

  4. 笔记||Python3进阶之调用外部程序

    像wget可以下载文件 ffmpeg可以切割.合并.转换.录制视频 free命令可以查看linux内存使用信息 python提供了库来调用外部程序.命令?> 最常见的两种方法:       ①o ...

  5. 笔记||Python3进阶之装饰器

    # 装饰器# 特征: 是用一个@开头的字符串# 装饰器通常用来装饰函数.或者类的方法# 被装饰后的函数,通常是在原有的函数基础上,会多出增加一点功能# 一般来说装饰器本身也是一个函数## def te ...

  6. Python学习笔记五(读取提取写入文件)

    #Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...

  7. python读取并写入mat文件

    用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...

  8. python读取yaml配置文件

    支持多种语言:python.js.golang.java.c.c++ YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下 ...

  9. python聚类算法实战详细笔记 (python3.6+(win10、Linux))

    python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念:     1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...

随机推荐

  1. 消息队列(四)--- RocketMQ-消息发送

    概述 RocketMQ 发送普通消息有三种 可靠同步发送 可靠异步发送 单向(oneway)发送 :只管发送,直接返回,不等待消息服务器的结果,也不注册回调函数,简单地说,就是只管发,不管信息是否发送 ...

  2. yii2.0 构造函数

    public function init() { parent:: init(); }

  3. fiddler的代理设置

    fiddler通过监听系统的8888端口实现对系统浏览器发出的http报文进行截获监听,因此要使fiddler能够监听到浏览器数据,需要对浏览器设置代理端口 浏览器 <--8888端口代理--& ...

  4. SpringMVC Controller 接收页面传递的中文参数出现乱码

    在Controller中接收到的POST参数如果是中文的话,显示为乱码.已知客户端传过来时编码为UTF-8. 问题产生分析: spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱 ...

  5. ECMAScript中的箭头函数 (=>) 使用注意事项

    箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或 new.target.这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数. 箭 ...

  6. 计算机二级-C语言-程序修改题-190113记录-对指定字符串的大小写变换处理。

    //给定程序中fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写.(这里的“单词”是指由空格隔开的字符串) //重难点:指针对数组的遍历.大小写转换的方法.第一种使用加减32 得到, ...

  7. Centos610安装MVN

    1.下载mav安装 下载免安装版上传linux cd /opt/maven mkdir repository cd apche-maven-3.3.9/conf vi settings.xml  设置 ...

  8. 05-Docker-Container资源限制

    目录 05-Docker-Container资源限制 参考 可压缩性 MEM限制 选项说明 压测示例 CPU限制 选项说明 压测示例 05-Docker-Container资源限制 Docker Ve ...

  9. ASP.NET Core搭建多层网站架构【14-扩展之部署到IIS】

    2020/02/03, ASP.NET Core 3.1, VS2019, IIS 10, dotnet-hosting-3.1.1-win.exe 摘要:基于ASP.NET Core 3.1 Web ...

  10. JDK源码分析-HashMap

    一.HashMap的内部属性 1.1 成员变量 1.1.1 size: HashMap包含的KV键值对的数量,也就是我们通常调用Map.size()方法的返回值 public int size() { ...