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中的类,对象,方法,属性
Sep 11 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
python抓取京东小米8手机配置信息
Nov 13 Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
Python Lambda函数使用总结详解
Dec 11 Python
python__new__内置静态方法使用解析
Jan 07 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python enumerate内置库用法解析
Feb 24 Python
python manim实现排序算法动画示例
Aug 14 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
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
php读取mysql的简单实例
2014/01/15 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
原生JavaScript实现留言板
2021/01/10 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python代码中怎么换行
2020/06/17 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
年终自我鉴定
2013/10/09 职场文书
气象学专业个人求职信
2014/03/15 职场文书
产品质量承诺范本
2014/03/31 职场文书
环保倡议书100字
2014/05/15 职场文书
学校节能减排倡议书
2014/05/16 职场文书
民生工作实施方案
2014/05/31 职场文书
2015年财务部工作总结
2015/04/10 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书