Si vous disposez de YAML conforme à la norme Spécification YAML 1.2 (version 2009), vous devez utiliser ruamel.yaml (disclaimer : je suis l'auteur de ce paquet). C'est essentiellement un sur-ensemble de PyYAML, qui supporte la plupart de YAML 1.1 (de 2005).
Si vous voulez être en mesure de préserver vos commentaires lors des allers-retours, vous devriez certainement utiliser ruamel.yaml.
La mise à jour de l'exemple de @Jon est facile :
import ruamel.yaml as yaml
with open("example.yaml") as stream:
try:
print(yaml.safe_load(stream))
except yaml.YAMLError as exc:
print(exc)
Utilisez safe_load()
sauf si vous avez vraiment le contrôle total de l'entrée, que vous en avez besoin (ce qui est rarement le cas) et que vous savez ce que vous faites.
Si vous utilisez pathlib Path
pour manipuler les fichiers, il est préférable d'utiliser la nouvelle API ruamel.yaml :
from ruamel.yaml import YAML
from pathlib import Path
path = Path('example.yaml')
yaml = YAML(typ='safe')
data = yaml.load(path)