Mise à jour de fichier YAML par programmation

J'ai un Python dict qui vient de la lecture d'un fichier YAML avec l'habitude

yaml.load(stream)

J'aimerais mettre à jour le fichier YAML par programme donné un chemin pour être mis à jour comme d':

groupe1,option1,option11,valeur

et d'enregistrer le résultat dict à nouveau comme un fichier yaml. Je suis confronté au problème de la mise à jour d'un dicntionary, en tenant compte que le chemin est dynamique (disons un utilisateur est en mesure de saisir le chemin d'accès par le biais d'un simple CLI, je l'ai créé à l'aide de Cmd).

Des idées?

merci!

Mise à JOUR
Permettez-moi d'être plus précis sur la question: Le problème avec la mise à jour de la partie d'un dictionnaire où je ne sais pas à l'avance la structure. Je travaille sur un projet où toute la configuration est stockée sur les fichiers YAML, et je veux ajouter une CLI pour éviter d'avoir à éditer à la main. Cette un fichier YAML, chargé d'un dictionnaire (config-dict) à l'aide de PyYaml:

config:
 a-function: enable
 b-function: disable
 firewall:
  NET:
   A:
    uplink: enable
    downlink: enable
   B:
    uplink: enable
    downlink: enable
  subscriber-filter:
   cancellation-timer: 180
 service:
  copy:
   DS: enable
  remark:
   header-remark:
    DSC: enable
    remark-table:
 port:
  linkup-debounce: 300
  p0:
   mode: amode
  p1:
   mode: bmode
  p2:
   mode: amode
  p3:
   mode: bmode

J'ai créé la CLI avec Cmd, et ça fonctionne très bien même avec l'auto-complétion. L'utilisateur peut fournir une ligne comme:

config port p1 mode amode

Donc, j'ai besoin de modifier:

config-dict['config']['port']['p1']['mode'] et le mettre à "amode'. Ensuite, utilisez yaml.dump() pour créer le fichier de nouveau. Une autre ligne serait:

config a-function enable

Donc config-dict['config']['d'une fonction'] doit être réglé sur "activer".

Mon problème est lors de la mise à jour du dictionnaire. Si Python les valeurs passées en tant que référence serait facile: il suffit de parcourir le dict jusqu'à ce que la valeur est trouvée et l'enregistrer. Effectivement, c'est ce que je fais pour le Cmd de saisie semi-automatique. Mais je ne sais pas comment faire la mise à jour.

Espère que j'ai expliqué me suis mieux maintenant!

Merci d'avance.

Enregistrement de YAML est yaml.dump facile, mais vous vous demandez pour la conception de votre application. C'est trop difficile, de l'avis de la base, et, en fait, n'a pas beaucoup à faire avec YAML.
merci pour votre réponse. Vous avez raison, je suis en demandant plus à propos de Python que YAML lui-même. Il n'est pas sur le design, mais une question très précise: Comment mettre à jour un dictionnaire qui a une dynamique de la taille.
Euh, je ne vois pas un problème ici - vraiment simple serait d'analyser le chemin indiqué sur la cli, marcher à travers votre dictionnaire pour assurer le chemin est valide, changer la valeur de vidage. Où est le problème? Autre que cela - qu'avez-vous essayé, ce qui n'a pas de travail, de coller du code.
Double Possible de l'Accès python imbriquée des éléments dans le dictionnaire via une liste de touches

OriginalL'auteur Ignacio Verona | 2014-05-28