yaml修改前:
name: ikun
age: 18
hobbies:
"0": [c]
"1": [t]
"2": [r]
"3": [l]
'4': [nothing]
yaml修改后:
name: ikun
age: 18
hobbies:
'0': [c]
'1': [t]
'2': [r]
'3': [l]
'4': [c, t, r, l]
code:
from ruamel import yaml as ryaml
from pathlib import Path
class YamlLoader:
def __init__(self, file, new_flag=True):
self.file = file
self.yaml_dir = Path(file).resolve().parent / (Path(file).stem + "_changed" + Path(file).suffix) if new_flag else file
def file_load(self):
with open(self.file, 'r', encoding='utf-8') as f:
data = f.read()
return ryaml.load(data, Loader=ryaml.RoundTripLoader)
def file_dump(self, data):
with open(self.yaml_dir, 'w', encoding='utf-8') as f:
ryaml.dump(data, f, Dumper=ryaml.RoundTripDumper, allow_unicode=True, default_flow_style=True)
if __name__ == "__main__":
camera_config = r'./ori.yaml'
yml = YamlLoader(camera_config, True)
yaml_info = yml.file_load()
yaml_info["hobbies"]["4"] = ['c', 't', 'r', 'l']
yml.file_dump(yaml_info)