Comment activer l'instruction for lorsqu'il existe plusieurs valeurs pour une clé dans le dictionnaire

Ce que je voulais faire

Appelez le modèle jinja2 dans / templates comme indiqué ci-dessous, et après le rendu, placez-le sous des playbooks avec la même configuration.


/User/taka
|--main.py
|--templates
|  |--inf
|  |  |--group_vars
|  |  |  |--test001.yml.j2
|  |  |  |--test002.yml.j2
|  |  |--inventory
|  |  |  |--inv_test001.yml.j2
|  |  |  |--inv_test002.yml.j2
|--playbooks
|  |--inf
|  |  |--group_vars
|  |  |  |--test001.yml.j2
|  |  |  |--test002.yml.j2
|  |  |--inventory
|  |  |  |--inv_test001.yml.j2
|  |  |  |--inv_test002.yml.j2

Points qui ont eu du mal

Comment activer l'instruction for lorsqu'il existe plusieurs valeurs pour une clé dans le dictionnaire

J'ai essayé de transformer l'instruction for avec un dictionnaire de type liste comme indiqué ci-dessous, mais bien sûr, il est au format clé-valeur, donc la valeur suivante écrase la valeur précédente et le répertoire du playbook a test002.yml.j2, inv_test002. Seul .yml.j2 a été créé

        self.j2_files = defaultdict(list)
        self.j2_files['group_vars'].append("test001.yml.j2")
        self.j2_files['group_vars'].append("test002.yml.j2")
        self.j2_files['inventory'].append("invt_est001.yml.j2")
        self.j2_files['inventory'].append("inv_test002.yml.j2")

        env = Environment(trim_blocks = True, loader =              
     FileSystemLoader(os.path.join("User", "taka", "templates", "inf"))

Même si je googlé [plusieurs valeurs pour une clé dans le dictionnaire Python] en anglais, je ne pouvais pas trouver un plan que je pensais, donc je suis resté un peu coincé.

Le résultat a été résolu comme suit

1        for k in self.j2_files.keys():
2            for v in self.j2_files[k]:
3                tmpl = env.get_template(k + "/" + v)
4                with open(os.path.join(User,taka,inf, k, v), "wb") as f:
5                    f.write(tmpl.render(self.test_conf).encode("utf-8"))

1: stocker la clé de j2_files, c'est-à-dire group_vars et inventaire dans k 2: Stockez la valeur correspondant à la clé de j2_files dans v 3: Spécifiez que l'emplacement du modèle est extrait du répertoire k + "/" + v sous templates / inf 4: Spécifiez la destination de sortie 5: Générer un fichier jinja à partir du dictionnaire spécifié

Recommended Posts

Comment activer l'instruction for lorsqu'il existe plusieurs valeurs pour une clé dans le dictionnaire
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
[python] Comment vérifier si la clé existe dans le dictionnaire
Comment définir plusieurs variables dans une instruction Python for
Comment obtenir toutes les clés et valeurs du dictionnaire
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Mémorandum Expression régulière Lorsqu'il y a plusieurs caractères que vous souhaitez séparer dans la chaîne de caractères
Comment attribuer plusieurs valeurs à la barre de couleurs Matplotlib
Transformez plusieurs listes avec l'instruction for en même temps en Python
Lorsque vous voulez plt.save dans l'instruction for
[Python] Comment afficher les valeurs de liste dans l'ordre
[Jinja2] Solution au problème que les variables ajoutées dans l'instruction for ne sont pas héritées
Comment adapter plusieurs bibliothèques d'apprentissage automatique en une seule fois
[Python] Comment écrire une instruction if en une phrase.
Comment vérifier si le contenu du dictionnaire est le même en Python par valeur de hachage
Je ne savais pas comment utiliser l'instruction [python] for
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
Comment exécuter la commande sed plusieurs fois à l'aide de l'instruction for
Comment définir la résolution de sortie pour chaque image clé dans Blender
Comportement lorsque 0, 1, False, True est utilisé pour la clé dict
Comment obtenir toutes les valeurs possibles dans une expression régulière
Comment déterminer qu'une clé croisée a été entrée dans Python3
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment convertir 0,5 en 1056964608 en un seul coup
Comment masquer l'invite de commande lors de l'exécution de python dans Visual Studio 2015
Comment vérifier quel est / dev / video ?? lorsque plusieurs caméras Web sont insérées
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
Comment comparer si le contenu des objets dans scipy.sparse.csr_matrix est le même
Changer la liste dans l'instruction for
Comment gérer des valeurs consécutives dans MySQL
Python> set> Convertir avec set ()> dictionary n'est que la clé> On m'a appris à convertir les valeurs du dictionnaire en set / dir ({}) / help ({}) / help ({} .valeurs)
Je veux visualiser où et combien de personnes se trouvent dans l'usine
Comment prendre plusieurs arguments lors d'un traitement parallèle à l'aide du multitraitement en python
Comment obtenir le nom du bloc-notes que vous utilisez actuellement dans Google Colab
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Comment afficher dans toute la fenêtre lors de la définition de l'image d'arrière-plan avec tkinter
Il y a des moments où vous pouvez raccourcir l'instruction if en utilisant max · min
Comment changer l'apparence du champ de clé étrangère non sélectionné dans le formulaire modèle de Django
[Astuces Python] Comment récupérer plusieurs clés avec la valeur maximale du dictionnaire
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
python> Comment écrire plusieurs lignes> Comment écrire dans mnist_with_summaries.py> Il semble qu'il n'y ait pas besoin de symboles de concaténation de ligne
Comment utiliser la bibliothèque C en Python
Comment utiliser MkDocs pour la première fois
Déterminer s'il y a des oiseaux dans l'image
Comment écrire une instruction ShellScript Bash for
Comment obtenir les fichiers dans le dossier [Python]
Plusieurs graphiques sont affichés dans une seule fenêtre (python)
Comment trouver la corrélation pour les variables catégorielles
N'y a-t-il pas une valeur par défaut dans le dictionnaire?
Comment stocker une fonction Python dans la valeur d'un dictionnaire (dict) et appeler la fonction en fonction de la clé
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
Comment démarrer du code écrit en Atom avec une seule commande sans démarrer Teminal
Une note lors de la vérification si la clé spécifiée existe dans le dictionnaire défini avec python
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Points à garder à l'esprit lors de la création d'outils automatisés pour l'atelier en Python
[Statistiques pour les programmeurs] Il existe plusieurs façons de calculer la valeur moyenne