#! /usr/bin/env python3 import yaml import ruamel.yaml def read_and_modify_one_block_of_yaml_data(filename = str,key = str,value = str): with open(filename, 'r') as f: data = yaml.safe_load(f) data[f'{key}'] = f'{value}' with open(filename, 'w') as file: yaml.dump(data,file,sort_keys=False) print('done!') def read_modify_save_yaml_data(filename,index,key,value,write_file): with open(filename,'r') as f: data = yaml.safe_load_all(f) loaded_data = list(data) print(loaded_data) loaded_data[index][f'{key}'].append(f'{value}') with open(filename, 'w') as file: yaml.dump_all(loaded_data,file, sort_keys=False) print(loaded_data) if __name__ == "__main__": #read yaml with open('/home/jonnybravo/Projekte/docker-compose/adguard-home/docker-compose.yml', 'r') as file: prime_service = yaml.safe_load(file) #print(prime_service) print(prime_service["services"]["adguardhome"]["image"]) #write yaml my_yaml = yaml.safe_load(''' --- age: 30 automobiles: - brand: Honda type: Odyssey year: 2018 - brand: Toyota type: Sienna year: 2015 name: John test: - test1 - test2 ''') #parsing yaml yaml = ruamel.yaml.YAML() yaml.indent(sequence=4, offset=2) #yaml.dump(foo, sys.stdout) #print(pars_test) #writing test_yaml with open('test.yml', 'w') as file: yaml.dump(my_yaml, file) #example modify yaml #read_and_modify_one_block_of_yaml_data(filename="test.yml", key="year", value="2021") #read_modify_save_yaml_data('test.yml', 0, 'test', 'test3', "test2")