Qu'est-ce que yaml.analyseur.ParserError: '<document de démarrer>", mais " <bloc de cartographie démarrer>"?
J'ai le texte suivant fichier YAML:
[mysqld]
user: "mysql"
pid-file: /var/run/mysqld/mysqld.pid
skip-external-locking
old_passwords: 1
skip-bdb
skip-innodb
create_key: yes
needs_agent: no
knows_oop: True
likes_emacs: TRUE
women:
- Mary Smith
- Susan Williams
et le code Python suivant:
#!/usr/bin/env python
import yaml
with open("config.yml") as f:
sample_config = f.read()
print(yaml.load(sample_config))
Mais il me donne:
Traceback (most recent call last):
File "/home/moose/Desktop/bla.py", line 9, in <module>
print(yaml.load(sample_config))
File "/usr/local/lib/python2.7/dist-packages/yaml/__init__.py", line 71, in load
return loader.get_single_data()
File "/usr/local/lib/python2.7/dist-packages/yaml/constructor.py", line 37, in get_single_data
node = self.get_single_node()
File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 39, in get_single_node
if not self.check_event(StreamEndEvent):
File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 98, in check_event
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "/home/moose/Desktop/bla.py"]
[dir: /home/moose/Desktop]
[path: /usr/local/texlive/2013/bin/x86_64-linux:/home/moose/google-cloud-sdk/bin:/home/moose/Downloads/google_appengine:/usr/local/texlive/2013/bin/x86_64-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games] self.current_event = self.state()
File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 174, in parse_document_start
self.peek_token().start_mark)
yaml.parser.ParserError: expected '<document start>', but found '<block mapping start>'
in "<string>", line 2, column 1:
user: "mysql"
Je n'ai aucune idée de ce que
expected '<document start>', but found '<block mapping start>'
signifie et comment le résoudre. Qu'est-ce que <document start>
et qu'est ce qu'un <block mapping start>
?
OriginalL'auteur Martin Thoma | 2014-07-27
Vous devez vous connecter pour publier un commentaire.
Votre fichier n'est pas valide YAML. Il ressemble à un mélange de YAML et Fichier INI.
Vous ne pouvez pas définir des blocs comme
[mysql]
en YAML. Si vous souhaitez définir une collection de propriétés, utilisez une liste avec les clés imbriquées:Vous ne pouvez pas avoir des mots nus comme
skip-external-locking
. Chaque propriété exige une valeur. Utilisationskip-external-locking: true
à la place.Voici une version de votre document avec les erreurs de syntaxe fixe. J'ai vérifié cela avec YAMLLint, un outil pratique pour la validation de YAML.
OriginalL'auteur Alex P