[PYTHON] So drehen Sie die for-Anweisung, wenn das Wörterbuch mehrere Werte für einen Schlüssel enthält

Was ich machen wollte

Rufen Sie die jinja2-Vorlage in / templates wie unten gezeigt auf und platzieren Sie sie nach dem Rendern unter Playbooks mit derselben Konfiguration.


/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

Punkte, die kämpften

So drehen Sie die for-Anweisung, wenn das Wörterbuch mehrere Werte für einen Schlüssel enthält

Ich habe versucht, die for-Anweisung mit einem Listenwörterbuch zu drehen, wie unten gezeigt, aber natürlich ist es im Schlüsselwertformat, sodass der nächste Wert den vorherigen Wert überschreibt und das Playbook-Verzeichnis test002.yml.j2, inv_test002 hat. Es wurde nur .yml.j2 erstellt

        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"))

Selbst wenn ich [mehrere Werte für einen Schlüssel im Python-Wörterbuch] auf Englisch googelte, konnte ich mir keinen Plan ausdenken, den ich dachte, also blieb ich ein wenig hängen.

Das Ergebnis wurde wie folgt gelöst

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: Speichern Sie den Schlüssel von j2_files, dh group_vars und Inventar, in k 2: Speichern Sie den Wert, der dem Schlüssel von j2_files entspricht, in v 3: Geben Sie an, dass der Speicherort der Vorlage aus dem Verzeichnis k + "/" + v unter templates / inf abgerufen wird 4: Geben Sie das Ausgabeziel an 5: Generieren Sie eine Jinja-Datei aus dem angegebenen Wörterbuch

Recommended Posts

So drehen Sie die for-Anweisung, wenn das Wörterbuch mehrere Werte für einen Schlüssel enthält
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
[Python] So überprüfen Sie, ob der Schlüssel im Wörterbuch vorhanden ist
So definieren Sie mehrere Variablen in einer Python for-Anweisung
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Memorandum Regulärer Ausdruck Wenn die Zeichenfolge mehrere Zeichen enthält, die Sie trennen möchten
So weisen Sie der Matplotlib-Farbleiste mehrere Werte zu
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Wenn Sie in der for-Anweisung plt.save möchten
[Python] So geben Sie Listenwerte der Reihe nach aus
[Jinja2] Lösung für das Problem, dass die in der for-Anweisung hinzugefügten Variablen nicht vererbt werden
So passen Sie mehrere Bibliotheken für maschinelles Lernen auf einmal an
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
So überprüfen Sie anhand des Hashwerts, ob der Inhalt des Wörterbuchs in Python identisch ist
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
So führen Sie den Befehl sed mit der for-Anweisung mehrmals aus
So stellen Sie die Ausgabeauflösung für jeden Keyframe in Blender ein
Verhalten, wenn 0, 1, False, True für die Diktiertaste verwendet wird
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
So stellen Sie fest, dass in Python3 ein Kreuzschlüssel eingegeben wurde
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So konvertieren Sie 0,5 in 1056964608 auf einmal
So blenden Sie die Eingabeaufforderung aus, wenn Sie Python in Visual Studio 2015 ausführen
Wie überprüfe ich, welches / dev / video ist, wenn mehrere Webkameras eingesetzt sind?
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
So vergleichen Sie, ob der Inhalt der Objekte in scipy.sparse.csr_matrix identisch ist
Ändern Sie die Liste in der for-Anweisung
Umgang mit aufeinanderfolgenden Werten in MySQL
Python> set> Mit set () konvertieren> Wörterbuch wird nur Schlüssel> Ich habe gelernt, wie man die Werte des Wörterbuchs in set / dir ({}) / help ({}) / help ({}) konvertiert .Werte)
Ich möchte visualisieren, wo und wie viele Leute in der Fabrik sind
Verwendung mehrerer Argumente bei der Parallelverarbeitung mithilfe der Mehrfachverarbeitung in Python
So erhalten Sie den Notebook-Namen, den Sie derzeit in Google Colab verwenden
Tipps für diejenigen, die verwirrt sind, wie man is und == in Python verwendet
So zeigen Sie im gesamten Fenster an, wenn Sie das Hintergrundbild mit tkinter einstellen
Es gibt Zeiten, in denen Sie die if-Anweisung mit max · min verkürzen können
So ändern Sie das Erscheinungsbild nicht ausgewählter Fremdschlüsselfelder in Djangos Modellformular
[Python-Tipps] So rufen Sie mehrere Schlüssel mit dem Maximalwert aus dem Wörterbuch ab
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Python> Wie schreibe ich mehrere Zeilen?> Wie schreibe ich in mnist_with_summaries.py?> Es scheint, dass keine Zeilenverkettungssymbole erforderlich sind
Verwendung der C-Bibliothek in Python
So verwenden Sie MkDocs zum ersten Mal
Feststellen, ob das Bild Vögel enthält
So schreiben Sie einen ShellScript Bash für Anweisung
So erhalten Sie die Dateien im Ordner [Python]
In einem Fenster werden mehrere Grafiken angezeigt (Python).
So finden Sie die Korrelation für kategoriale Variablen
Gibt es keinen Standardwert im Wörterbuch?
So speichern Sie eine Python-Funktion im Wert eines Wörterbuchs (dict) und rufen die Funktion gemäß dem Schlüssel auf
So listen Sie Dateien im angegebenen Verzeichnis auf (Suche nach mehreren Bedingungen / Unterverzeichnissen)
So starten Sie in Atom geschriebenen Code mit einem Befehl, ohne teminal zu starten
Ein Hinweis beim Überprüfen, ob der angegebene Schlüssel im definierten Wörterbuch mit Python vorhanden ist
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Beachten Sie Folgendes, wenn Sie automatisierte Tools für die Werkstatt in Python erstellen
[Statistik für Programmierer] Es gibt mehrere Möglichkeiten, den Durchschnittswert zu berechnen