python读取yaml文件后修改写入本地实例


Posted in Python onApril 27, 2020

首先安装pip install ruamel.yaml

用于修改yaml文件

#coding:utf-8
from ruamel import yaml

def up_yml(ip_server):
 with open('./../docker-compose-demo.yml', encoding="utf-8") as f:
  content = yaml.load(f, Loader=yaml.RoundTripLoader)
  # 修改yml文件中的参数
  content['service']['memo_query']['server_ip'][0] = 'mysql_host={}'.format(ip_server)
 with open('./../docker-compose.yml', 'w', encoding="utf-8") as nf:
  yaml.dump(content, nf, Dumper=yaml.RoundTripDumper)

if __name__ == '__main__':
 up_yml(ip_server='0.0.0.0')

修改前:

version: '1'
service:
 memo_query:
 image: python:2.0
 restart: always
 server_ip:
 - mysql_host=192.168.1.1

修改后:

version: '1'
service:
 memo_query:
 image: python:2.0
 restart: always
 server_ip:
 - mysql_host=0.0.0.0

补充知识:解决 Python ruamel.yaml 读写 yaml 文档 format 格式不一致问题

使用 ruamel.yaml 过程中发现输入输出格式不一致,网上找到一个解决方案:

input:

ChuaTony: 
 公司: 文传
 联络: 
 - 公司: '1422031030'
 - 手机: '18650144578'
 - 住家: '2233068479'
 住址: 
 - 公司: ?建。
 - 住家: 台中。
 交通: 无
 附件: 
Tom: 
 公司: 天?
 联络: 
 - 公司: '1422031030'
 - 手机: '18650123456'
 - 住家: '2233061234'
 住址: 
 - 公司: ?建。
 - 住家: 台北。
 交通: 自行车
 附件:
output:
ChuaTony:
 交通: 无
 住址:
 - 公司: ?建。
 - 住家: 台中。
 公司: 文传
 联络:
 - 公司: '1422031030'
 - 手机: '18650144578'
 - 住家: '2233068479'
 附件: null
Tom:
 交通: 自行车
 住址:
 - 公司: ?建。
 - 住家: 台北。
 公司: 天?
 联络:
 - 公司: '963852741'
 - 手机: '18650123456'
 - 住家: '2233061234'
 附件: null

格式不一致

使用:

ruamel.yaml.load(Loader=ruamel.yaml.RoundTripLoader) ruamel.yaml.dump(Dumper=ruamel.yaml.RoundTripDumper)

ruamel.yaml.round_trip_load() ruamel.yaml.round_trip_dump()

来解决

修改程式码如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
' a YAML module '
 
__author__ = 'Chua Tony'
 
import ruamel.yaml
 
#开档
with open("人资.yaml", "r",encoding="utf-8") as docs:
	try:
		#alldata = ruamel.yaml.load(docs, Loader=ruamel.yaml.RoundTripLoader) #使用 Loader=ruamel.yaml.RoundTripLoader
		alldata = ruamel.yaml.round_trip_load(docs)
	except ruamel.yaml.YAMLError as exc:
		print(exc)
 
#印出
for data in alldata:
	print(alldata[data]['联络'])
 
#修改
alldata['Tom']['联络'][0]['公司']='963852741'
 
#写档
with open('人资1.yaml', 'w+', encoding='utf8') as outfile:
	#ruamel.yaml.dump(alldata, outfile, default_flow_style=False, allow_unicode=True, Dumper=ruamel.yaml.RoundTripDumper, indent=2, block_seq_indent=2) #使用 Dumper=ruamel.yaml.RoundTripDumper
	ruamel.yaml.round_trip_dump(alldata, outfile, default_flow_style=False, allow_unicode=True, indent=2, block_seq_indent=2) #indent:缩进 block_seq_indent:区块缩进

output:

ChuaTony:
 公司: 文传
 联络:
 - 公司: '1422031030'
 - 手机: '18650144578'
 - 住家: '2233068479'
 住址:
 - 公司: ?建。
 - 住家: 台中。
 交通: 无
 附件:
Tom:
 公司: 天?
 联络:
 - 公司: '963852741'
 - 手机: '18650123456'
 - 住家: '2233061234'
 住址:
 - 公司: ?建。
 - 住家: 台北。
 交通: 自行车
 附件:

搞定!!!

以上这篇python读取yaml文件后修改写入本地实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之实现石头剪刀布游戏示例
Feb 11 Python
python多线程操作实例
Nov 21 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
python中requests库session对象的妙用详解
Oct 30 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
Python创建数字列表的示例
Nov 28 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
python3的pip路径在哪
Jun 23 Python
全网最全python库selenium自动化使用详细教程
Jan 12 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 #Python
Python判断字符串是否为空和null方法实例
Apr 26 #Python
如何将PySpark导入Python的放实现(2种)
Apr 26 #Python
基于python实现对文件进行切分行
Apr 26 #Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 #Python
简单了解Java Netty Reactor三种线程模型
Apr 26 #Python
Python Selenium截图功能实现代码
Apr 26 #Python
You might like
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
为jQuery增加join方法的实现代码
2010/11/28 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
JQuery基础语法小结
2015/02/27 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
js实现日历
2020/11/07 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
厨师岗位职责
2013/11/12 职场文书
顶岗实习接收函
2014/01/09 职场文书
学校门卫岗位职责
2014/03/16 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python