我试图制作一个工具,更新文件中有"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)