J'essayais de faire un outil qui met à jour les valeurs de yaml dans les fichiers qui ont "PENDING" en eux. Il fonctionne, mais j'ai besoin d'être formaté comme ceci:yaml.dump est dumping dans un dict, et je ne veux pas le faire
fields:
setName: ("name")
WishName: ("name")
WishNameState: ("PENDING")
Cependant, il veut vider dans ce format:
fields: {WishName: ("name"), WishNameState: ("APPROVED"), setName: ("name")}
Comment puis-je faire jeter dans le format que je veux à? Voici mon code, si vous savez comment je suis en train de faire, il:
import glob
import os
import yaml
def processFile(f,t):
data = open(f,'rb').read()
lines = data.replace('\r\n','\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!')
Toute aide est appréciée! Merci :)
Votre code change les fichiers yam comme prévu. Qu'est-ce qui ne va pas? – falsetru
Une question similaire, http://stackoverflow.com/a/18210750/5781248 –
@falsetru, le problème est que je veux qu'il soit formaté d'une manière différente quand il est vidé. Cela transforme tout en dict. Je veux que le format reste comme 'fields: (NEWLINE) setName: (" hey ") (NEWLINE)' etc. Cependant, il le vide comme 'fields: {setName: (" Hey "), WishName: (" Salut ")} 'et je ne veux pas le faire. – Developre