Wenn Sie YAML haben, das dem YAML 1.2 Spezifikation (veröffentlicht 2009), dann sollten Sie ruamel.yaml (Haftungsausschluss: Ich bin der Autor dieses Pakets). Es ist im Wesentlichen eine Obermenge von PyYAML, das den größten Teil von YAML 1.1 (von 2005) unterstützt.
Wenn Sie in der Lage sein wollen, Ihre Kommentare beim Roundtrip zu erhalten, sollten Sie auf jeden Fall ruamel.yaml verwenden.
Das Beispiel von @Jon ist leicht zu verbessern:
import ruamel.yaml as yaml
with open("example.yaml") as stream:
try:
print(yaml.safe_load(stream))
except yaml.YAMLError as exc:
print(exc)
Verwenden Sie safe_load()
es sei denn, Sie haben wirklich die volle Kontrolle über die Eingabe, brauchen sie (was selten der Fall ist) und wissen, was Sie tun.
Wenn Sie pathlib verwenden Path
für die Bearbeitung von Dateien zu verwenden, ist es besser, die neue API ruamel.yaml zu nutzen:
from ruamel.yaml import YAML
from pathlib import Path
path = Path('example.yaml')
yaml = YAML(typ='safe')
data = yaml.load(path)