yaml.dump 正在转储字典,我不希望它这样做



我试图制作一个工具,更新文件中有"PENDING"的yaml值。它确实可以工作,但我需要像这样格式化它:

fields:
  setName: ("name")
  WishName: ("name")
  WishNameState: ("PENDING")

但是,它想以这种格式转储它:

fields: {WishName: ("name"), WishNameState: ("APPROVED"), setName: ("name")}

我怎样才能把它转储成我想要的格式?下面是我的代码,这样你就知道我现在是怎么做的了:

import glob
import os
import yaml
def processFile(f,t):
    data = open(f,'rb').read()
    lines = data.replace('rn','n').split('n')
    lines_found = []
    for i,x in enumerate(lines):
        if t in x:
            lines_found.append(i+1)
    return lines_found
term = 'PENDING'
for x in glob.glob('*.yaml'):
    r = processFile(x,term)
    if r:
        with open(x) as f:
            yamlfile = yaml.load(f)
        fields = yamlfile['fields']
        name = fields['WishName']
        print('Name: ' + name)
        print('Approve or reject?')
        aor = raw_input('a/r: ')
        if aor == 'a':
            fields['setName'] = name
            fields['WishNameState'] = '("APPROVED")'
            with open(x, "w") as f:
                yaml.dump(yamlfile, f)
        elif aor == 'r':
            fields['WishNameState'] = '("REJECTED")'
            with open(x, "w") as f:
                yaml.dump(yamlfile, f)
        else:
            'Invalid response. Shutting down...'
            sys.exit()
print('End of results!')

任何和所有的帮助是感激的!谢谢:)

在您的代码中,替换

yaml。Dump (yamlfile, f)

yaml。dump(yamlfile, f, default_flow_style=False)

相关内容

最新更新