`

python更新yaml文件保留注释内容和换行缩进办法

阅读更多

python常用编辑读取yaml文件的库有yaml、pyyaml等,直接使用会因为注释内容大多为中文,编码存储实现方式原因,导致注释丢失,或中文部分变成乱码。

 

下面是使用ruamel.yaml实现保留手动编辑的注释和中文部分内容方法源码,很简单。

 

# -*- coding: utf-8 -*-
# @Time : 2021/9/5 23:10
# @Author : Administrator
# @File : yamltoolsplus.py
# @Software : PyCharm

import os
from ruamel.yaml import YAML

'''yaml文件的相对路径'''
filename =os.path.join(os.path.dirname(__file__),'PublicConfig.yaml').replace("\\","/")

co=open(filename,'r+',encoding='utf-8')

yaml = YAML()
yamldata = yaml.load(co)

def update_yamldata(data):
    co = open(filename, 'r+', encoding='utf-8')
    yaml = YAML()
    yaml.dump(data, open(filename, 'w+', encoding='utf-8'))
    co.close()

"""
使用示例
"""
#引用import
# from common_interface.funder.yamltools import *

from faker import Faker

fa_cn=Faker(locale='zh_CN')
fa_en=Faker(locale='en_US')
#更新前查询
print("更新前用户姓名:",yamldata['Eboss_User']['cnName'])

#更新
yamldata['Eboss_User']['cnName']=fa_cn.name()
update_yamldata(data=yamldata)
print("更新后用户姓名:",yamldata['Eboss_User']['cnName'])

#追加json内容到yaml文件中,其中['test']节点为新增节点
jsondata={'pageIndex': 1, 'pageSize': 10, 'model': {'source': '', 'sourceCode': '', 'target': '', 'receiptStockStatus': '', 'targetCode': '', 'orderNo': '', 'stockOutNo': '', 'shipmentVendor': '', 'shipmentCode': 'JDLuBan20210906144703991391', 'estimateTimeStart': '', 'estimateTimeEnd': '', 'checkoutTimeStart': '', 'checkoutTimeEnd': '', 'transportStatus': 1, 'transportFormNo': '', 'gmtCreateStart': '2021-08-07 00:00:00', 'gmtCreateEnd': '2021-09-06 23:59:59'}}
yamldata['test']=jsondata
update_yamldata(data=yamldata)

 

 

 

分享到:
评论

相关推荐

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

    主要介绍了python读取yaml文件后修改写入本地实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Python读取yaml文件的详细教程

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言。yaml 是专门用来写配置文件的语言,... #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样 3.yaml支持的数

    详解Python读取yaml文件多层菜单

    主要介绍了Python读取yaml文件多层菜单,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    python解析yaml文件过程详解

    主要介绍了python解析yaml文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Python使用pyyaml模块处理yaml数据

    pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump()、yaml.safe_load()函数将python值和yaml格式数据相互转换。当然也存在yaml.dump()、yaml.load()函数,同样能实现数据转换功能,只是官方不太...

    使用python检查yaml配置文件是否符合要求

    主要介绍了使用python检查yaml配置文件是否符合要求,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    ingress的yaml文件

    ingress的yaml文件

    Python读取YAML文件过程详解

    这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 YAML语法 学习手册 Python读取方法: import yaml with open('...

    yaml文件解析(java)

    包括pom文件导入依赖,封装解析文件java类完整版,源yaml文件等

    python中yaml配置文件模块的使用详解

    和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。 YAML不是XML。 为什么不是XML呢?因为: YAML的可读性好。 YAML和脚本语言的交互性好。 YAML使用实现语言的数据...

    Python-pycatj将jsonyaml文件展平为python兼容路径

    pycatj - 将json/yaml文件展平为python兼容路径

    python中yaml模块的使用

    YAML是⼀种⽐XML和JSON更轻的⽂件格式,也更简单更强⼤,它可以通过缩进来表⽰结构,是不是听起来就和Python很搭? 顾名思义,⽤语⾔编写的⽂件就可以称之为YAML⽂件。PyYaml是Python的⼀个专门针对YAML⽂件操作的...

    基于Python和PyYAML读取yaml配置文件数据

    缩进的时候使用的是空格,不是tab键(因为在写python脚本的时候可能会习惯用tab键进行缩进,这里的缩进只能使用空格。只要同层级的对齐,空一格或者空两格都是没有关系的)  4.#号表示注释  (这不就是python代码...

    12-Python全局配置文件ini文件处理&YAML文件处理

    Python全局配置文件ini文件处理&YAML文件处理 源码与作业

    Python基于yaml文件配置logging日志过程解析

    主要介绍了Python基于yaml文件配置logging日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics