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 相关文章推荐
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
详解Python爬虫的基本写法
Jan 08 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
python实现KNN近邻算法
Dec 30 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
教你怎么用Python生成九宫格照片
May 20 Python
手残删除python之后的补救方法
Jun 26 Python
Python PIL按比例裁剪图片
May 11 Python
python单向链表实例详解
May 25 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
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
jquery获取复选框的值的简单实例
2016/05/26 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python get获取页面cookie代码实例
2018/09/12 Python
Python3最长回文子串算法示例
2019/03/04 Python
python实现图片中文字分割效果
2019/07/22 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
python Timer 类使用介绍
2020/12/28 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
一道Delphi面试题
2016/10/28 面试题
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
四风查摆剖析材料
2014/10/10 职场文书
高中班主任评语
2014/12/30 职场文书
现场施工员岗位职责
2015/04/11 职场文书
老员工辞职信范文
2015/05/12 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
西游降魔篇观后感
2015/06/15 职场文书