python笔记19-yaml文件写入(ruamel.yaml)

前言

yaml作为配置文件是非常友好的一种格式,前面一篇讲了yaml的一些基础语法和读取方法,本篇继续讲yaml文件写入方法
用yaml模块写入字典嵌套字典这种复杂的数据,会出现大括号{ },不是真正的yaml文件数据,可以用ruamel模块就解决。
安装方法:

pip install ruamel.yaml

yaml文件写入

1.用原生的yaml模块写入这种字典嵌套字典的复杂数据

import os import yaml # 作者:上海-悠悠 QQ交流群:330467341 # 将字典写入到yaml desired_caps = {                'platformName': 'Android',                'platformVersion': '7.0',                'deviceName': 'A5RNW18316011440',                'appPackage': 'com.tencent.mm',                'appActivity': '.ui.LauncherUI',                'automationName': 'Uiautomator2',                'unicodeKeyboard': [True,"hh"],                'resetKeyboard': True,                'noReset': True,                'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}                } curpath = os.path.dirname(os.path.realpath(__file__)) yamlpath = os.path.join(curpath, "caps.yaml") # 写入到yaml文件 with open(yamlpath, "w", encoding="utf-8") as f:    yaml.dump(desired_caps, f)

2.运行完之后,在当前脚本文件夹目录会生成一个caps.yaml文件,打开后效果如下

3.运行完之后,发现字典嵌套的字典,出现了大括号:{androidProcess: 'com.tencent.mm:tools’},这不是真正的yaml数据,不是我们想要的,解决办法看下文

ruamel.yaml写入

1.先pip安装ruamel.yam模块

pip install ruamel.yam

2.使用方法跟yaml差不多,只是在使用dump方法多个一个参数:Dumper=yaml.RoundTripDumper

import os from ruamel import yaml # 作者:上海-悠悠 QQ交流群:330467341 # 将字典写入到yaml desired_caps = {                'platformName': 'Android',                'platformVersion': '7.0',                'deviceName': 'A5RNW18316011440',                'appPackage': 'com.tencent.mm',                'appActivity': '.ui.LauncherUI',                'automationName': 'Uiautomator2',                'unicodeKeyboard': True,                'resetKeyboard': True,                'noReset': True,                'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}                } curpath = os.path.dirname(os.path.realpath(__file__)) yamlpath = os.path.join(curpath, "caps.yaml") # 写入到yaml文件 with open(yamlpath, "w", encoding="utf-8") as f:    yaml.dump(desired_caps, f, Dumper=yaml.RoundTripDumper)

3.运行完之后结果:

ruamel.yaml读yaml

1.使用ruamel.yaml模块也能读yaml文件,使用方法相对于之前的yaml.load方法多加一个参数:Loader=yaml.Loader

初学者可以选择《python核心编程第二版》

python能力提升,可以选择《python核心编程第三版》第一章就是re正则,此书不适合初学者
(0)

相关推荐

  • RetinaFace MXNet模型转ONNX转TensorRT

    文章目录 RetinaFace MXNet模型转ONNX转TensorRT 1. github开源代码 2. MXNet模型转ONNX模型 3. ONNX模型转TensorRT模型 3.1 概述 3. ...

  • Python有哪些函数?Python基础

    Python常用函数有哪些?我想大家都比较好奇这个问题,今天特地整理了一篇有关Python常用函数的相关内容,接下来我们一起来看看具体的内容介绍吧. 1. print()函数:打印字符串; 2. ra ...

  • Python常用配置文件ini、json、yaml读写总结

    原创 吾非同 吾非同 3天前 开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息.请求的url.测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以 ...

  • tmuxp-一个用python编写的可信赖的tmux会话管理器

    tmuxp-一个用python编写的可信赖的tmux会话管理器. 也许您现在可以立即对工作流程进行优化,并且在利用新功能时具有巨大的回报潜力.学习使用该工具将世界导航到终端,该工具每天都由成千上万的系 ...

  • 5 分钟掌握 Python 中常见的配置文件

    为什么要写配置文件 在开发过程中,我们常常会用到一些固定参数或者是常量.对于这些较为固定且常用到的部分,往往会将其写到一个固定文件中,避免在不同的模块代码中重复出现从而保持核心代码整洁. 这个固定文件 ...

  • python笔记4-遍历文件夹目录os.walk()

    前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 一.walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk( ...

  • python笔记14-读取yaml配置文件

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  • python笔记5-python2写csv文件中文乱码问题

    前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode. 当list.tuple.dict里面有中文时,打印出来的是Unicode编码,这个是无解的. 对 ...

  • httprunner学习27-参数关联时在 yaml 文件 int 和 str 数据类型转换

    前言 使用httprunner框架参数关联的时候,最近遇到小伙伴们问的一个问题,上个接口返回的值是一个字符串类型(如: "123456"),下个接口要用到这个值,但是需传int类型 ...

  • python笔记49-yaml文件中变量的使用(锚点& 与 引用*)

    前言 在yaml文件中如何引用变量?当我们在一个yaml文件中写很多测试数据时候,比如一些配置信息像用户名,邮箱,数据库配置等很多地方都会重复用到. 重复的数据,如果不设置变量,后续维护起来就很困难. ...

  • pytest文档72- 使用 template 替换 yaml 文件的变量

    前言 在接口自动化测试的时候,yaml 文件一般放测试的数据或当配置文件使用,yaml 文件存放静态的数据是没问题的,python的数据类型基本上都是支持的. 有时候我们想在 yaml 文件中引用变量 ...

  • Python 实时向文件写入数据(附代码

    ​之前在做数据分析的过程中,需要对数据进行实时的写入,比如对新生成的数据写入之前已经生成的txt或csv文件中.现在想想其实很简单,所以做一个总结. 1:实时向csv文件写入数据 ​假设需要生成一张c ...

  • Python笔记3:使用命令行运行Python文件

    2021-06-28 17:04:31 csdn_work 码龄5年 使用命令行运行Python文件 1.写Python代码,并保存文件为XX.py: 2.打开cmd代码命令行,输入 cd d/ 文件 ...