Ich versuche, eine YAML-Datei mit Python zu sortieren, die wie folgt aussieht:lesen und sortieren Zeilenblock von YAML-Datei in Python
........
........
........
# comment
ip address/20:
datacenter: x
context: y
# comment
ip address/32:
datacenter: a
context: b
# comment
ip address/24:
datacenter: x
context: z
# comment
ip address/16:
datacenter: a
context: b
........
........
........
die Datei sehr lang ist. Ich konnte erreichen, um die Datei mit Python zu lesen, aber ich möchte die aus Blöcke setzen je nach CIDR Notation sortieren:
........
........
........
# comment
ip address/16:
datacenter: a
context: b
# comment
ip address/20:
datacenter: x
context: y
# comment
ip address/24:
datacenter: x
context: z
# comment
ip address/32:
datacenter: a
context: b
........
........
........
Gibt es eine Möglichkeit, es zu tun, während die Datei zu lesen:
import yaml
with open("file.yml", 'r') as stream:
try:
print(yaml.load(stream))
except yaml.YAMLError as err:
print(err)
oder soll ich die Datei Zeile für Zeile lesen? Danke vielmals.
Sobald Sie 'yaml.load (stream)' aufrufen, haben Sie (in diesem Fall) ein Python-Wörterbuch, an diesem Punkt ist es nicht mehr wirklich eine YAML-Frage. Sie fragen wirklich nur: "Wie drucke ich die Elemente in einem Wörterbuch, sortiert nach ihrem Schlüssel?", Für die es viele Ressourcen gibt. Das Modul [netaddr] (https://pypi.python.org/pypi/netaddr) kann eine Hilfe beim Parsen von CIDR ntoation sein. – larsks
@larks, danke Mann, ich werde einen Blick darauf werfen. – Max