`

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文件后修改写入本地实例

    首先,我们需要安装`ruamel.yaml`库,这是Python中处理YAML文件的一个强大工具,支持保留原始格式和注释,非常适合进行修改后再写回文件的操作。通过运行`pip install ruamel.yaml`即可完成安装。 下面是一个具体的...

    Python读取yaml文件的详细教程

    Python读取YAML文件是开发过程中常见的任务,特别是在配置文件管理和自动化测试领域。YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化语言,它的设计目标是为了让配置文件更加简洁、直观,与JSON格式...

    Python自动化测试中yaml文件读取操作

    在Python自动化测试中,经常会遇到需要处理配置文件的情况,而yaml(YAML Ain't Markup Language)作为一种简洁且强大的配置文件语言,因其易读性而受到广泛欢迎。yaml文件的格式清晰,层次分明,与JSON类似但更为...

    python中yaml模块的使用

    在Python中,`yaml`模块(通常通过`PyYAML`库实现)是处理YAML文件的核心工具。YAML(YAML Ain't Markup Language)是一种轻量级的数据序列化语言,设计目标是让人类能够方便地阅读和编写,同时也能被计算机程序轻松...

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

    使用Python的`open()`函数打开YAML文件,然后调用`yaml.load()`方法来解析文件内容。例如: ```python import yaml with open('yaml_example.yaml') as f: content = yaml.safe_load(f) ``` `yaml.safe_load...

    Python库 | ruamel.yaml-0.15.74-cp35-cp35m-win_amd64.whl

    1. **保留原始格式**:ruamel.yaml库在解析YAML文件时会尽可能地保留原始的格式和注释,这对于维护和调试配置文件非常有帮助,因为原始的空白和注释不会丢失。 2. **YAML 1.2支持**:ruamel.yaml支持YAML 1.2规范,...

    yaml文件加载和解析

    1. 关键字与值:YAML文件中的数据由关键字(键)和值对组成,通常以空格或制表符进行缩进,缩进的级别表示嵌套关系。例如: ``` name: 张三 age: 30 ``` 2. 注释:以`#`开头的行被视为注释,直到行尾。 3. 字符串:...

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

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

    yaml文件格式规范-yaml文件

    可以通过双引号、单引号或使用 `|` 和 `>` 来表示不同类型的文本块,分别对应保持原始换行、保留换行和合并换行。 **4.5 类型显式指示** 使用 `!` 符号进行类型指定,单个感叹号通常是自定义类型,双感叹号表示内置...

    Python库 | ruamel.yaml.cmd-0.5.10.tar.gz

    "ruamel.yaml"是Python中处理YAML的一个强大的第三方库,由Stephan Ruß开发,它不仅提供了解析和生成YAML的功能,还支持对原始YAML对象的修改,保留注释和原有格式,这在处理复杂YAML文件时非常有用。 "ruamel....

    Python库 | ruamel.yaml-0.10.14-cp27-none-win32.whl

    - **保留原始格式**:ruamel.yaml库在解析和读取YAML文件时,会尽可能地保留原始的缩进、空格和换行,这对于需要保持YAML文件格式不变的应用非常有用。 - **可变性**:与pyyaml不同,ruamel.yaml允许对解析后的数据...

    Python库 | ruamel.yaml-0.10.4.tar.gz

    1. **保留原始格式**:ruamel.yaml在解析和写入YAML文件时,会尽可能地保留原有的空白和注释,这对于维护和版本控制非常重要。 2. **可变性**:与PyYAML相比,ruamel.yaml的YAML对象是可变的,这意味着你可以直接...

    Python库 | ruamel.yaml-0.15.31-cp35-cp35m-win32.whl

    ruamel.yaml的一个关键特性是它在读取YAML文件时保留原始格式和缩进,这意味着当你重新写入文件时,原有的空白和注释将得到保留,这对于维护具有人类可读性的配置文件非常有用。 2. **类Python的数据结构**: ...

    Python库 | ruamel.yaml-0.15.29-cp27-cp27m-win32.whl

    1. **保留格式**:ruamel.yaml的一个主要特点是它能够保留原始的YAML格式,包括空白、注释和顺序。这意味着在读取和写回YAML文件时,不会丢失任何格式信息,这对于需要保持源文件整洁性的项目尤其重要。 2. **圆...

    yaml文件编写格式.docx

    YAML 文件编写格式 YAML(YAML Ain't Markup Language)是一种人类友好的数据序列化语言,...通过了解 YAML 文件编写格式和 `yaml.load()` 方法的使用,我们可以更好地使用 YAML 语言在 Python 中实现数据交换和存储。

    Python库 | ruamel.yaml-0.14.9-cp27-cp27mu-manylinux1_x86_64.whl

    - **保留格式:** ruamel.yaml在读取和写入YAML文件时会尽可能地保留原始格式,包括缩进、空格、注释等,这对于维护和审查YAML配置至关重要。 - **圆括号对齐:** 库支持使用圆括号进行键值对的对齐,使得输出的...

Global site tag (gtag.js) - Google Analytics