python yaml文件数据按原有的数据顺序dump

yml文件的更新后工具类:

复制代码
import os
import yaml


class YamlUtils():
    def __init__(self,folder_name='config'):
        self.foler_name = folder_name

    def get_yaml_load(self, file_name):
        yaml_filename = self.__get_yaml_file(file_name)
        f = open(yaml_filename, encoding='utf-8')
        yaml_load = yaml.full_load(f)
        return yaml_load

  def __get_yaml_file(self, file_name): """ :param file_name: the filename of the configfile :return: the objection of the config """ try: yaml_file = self.__get_file_path(self.foler_name, file_name) return yaml_file except Exception as e: print("read config file error:" + str(e)) @staticmethod def __get_file_path(folder_name, file_name): """ :param folder_name: the directory of the config ,the default directory is config :param file_name: the filename of the configfile :return: the objection of the config """ try: config_path = os.path.abspath('..') folder_path = os.path.join(config_path, folder_name) file_path = os.path.join(folder_path, file_name) return file_path except Exception as e: print('read config file failed ' + str(e)) def set_yaml(self, file_name,content): """ 调用此方法时,需新建一个YamlUtils().set_yaml(file_name,content) 用原来的设置不会生效 default_flow_style=False : 表示dump后的字典数据全部以yml格式显示,默认为为True sort_keys=False : 表示dump后的字典数据按原有的顺序示,为True时按字母的排序展示,默认为为True """ yaml_filename = self.__get_yaml_file(file_name) f = open(yaml_filename,'w', encoding='utf-8') yaml_dump = yaml.dump(content,f,allow_unicode=True, default_flow_style=False,sort_keys=False) # print("数据更新完成") return yaml_dump
复制代码

 

yml文件原有数据顺序:

 

 

更改字段值后的顺序:

 

 出现原因是:

yaml.dump(content,f,allow_unicode=True, default_flow_style=False,sort_keys=True)
该行的代码中
sort_keys的默认值为True,改为Flase后可修复代顺序变化的问题

 

posted @   pandaly  阅读(6463)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示