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后可修復代順序變化的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM