2017-08-07 6 views
1

J'ai un grand fichier YAML dont j'ai besoin d'ajouter des commentaires par programmation pour certaines clés seulement. Par exemple, si je vois une clé "foo", j'ai toujours besoin d'ajouter un commentaire qui dit "bar".Exemples de commentaires Ruamel mis à jour

J'ai essayé d'examiner des exemples (ex1, ex2) pour ajouter des commentaires à un fichier YAML en utilisant Ruamel, mais aucun de ces exemples ne semble fonctionner. En particulier, je ne peux même pas sembler utiliser la fonction ruamel.yaml.load() correctement. J'ai toujours ce message d'erreur: TypeError: update() takes exactly 2 arguments (1 given). Je utilise Ruamel 0.15.22 et Python 2.7.8. Aucune suggestion?

EDIT: Y compris un exemple de code qui jette le TypeError

from __future__ import print_function 
import ruamel.yaml 
inp = """\ 
abc: 
    - a # comment 1 
xyz: 
    a: 1 # comment 2 
    b: 2 
    c: 3 
    d: 4 
    e: 5 
    f: 6 # comment 3 
""" 
data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader) 
data['abc'].append('b') 
data['abc'].yaml_add_eol_comment('comment 4', 1) # takes column of comment 1 
data['xyz'].yaml_add_eol_comment('comment 5', 'c') # takes column of comment 2 
data['xyz'].yaml_add_eol_comment('comment 6', 'e') # takes column of comment 3 
data['xyz'].yaml_add_eol_comment('comment 7', 'd', column=20) 
print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper), end='') 
+0

S'il vous plaît inclure le programme que vous l'avez qui renvoie cette erreur. Et un exemple d'une partie de votre contribution. – Anthon

+0

Salut Anthon, J'ai copié le programme du lien ex1 exactement (voir page 9) et l'ai également ajouté au message original. –

+0

En dehors de l'ajout d'une nouvelle ligne avant 'data ['abc'] (qui a donné un' SyntaxError') ce code fonctionne bien dans un virtualenv (Linux, Python 2.7.10 ruamel.yaml == 0.15.22). Ce document est cependant du mauvais site, vous devriez regarder [this] (http://yaml.readthedocs.io/en/latest/). – Anthon

Répondre

0

Il se avère que l'installation de Ruamel de notre groupe a quelques problèmes. Pour l'instant, l'utilisation d'un virtualenv Python résout toutes les erreurs. Merci pour @Anthon pour la suggestion d'aller avec virtualenv.