2012-01-29 7 views
9

jestem na ubunty 64 z Pythona 2.7 i stosując PyYAML-3,10Python i PYAML - yaml.scanner.ScannerError: Wartości mapowania nie są akceptowane tutaj

Poniżej jest mój plik yaml:

host:localhost 
username:root 
password:test 
database:test 
operations_database:operations 
treeroot: 
    branch1: 
     name: Node 1 
     branch1-1: 
      name: Node 1-1 
    branch2: 
     name: Node 2 
     branch2-1: 
      name: Node 2-1 

Kiedy Uruchomiłem poniższy kod, otrzymuję poniższy błąd. Ale jeśli usunę linie nad treeroot, kod działa:

from yaml import load, dump 
try: 
    from yaml import CLoader as Loader, CDumper as Dumper 
except ImportError: 
    from yaml import Loader, Dumper 
f=open('amazon.yaml') 
data = load(f, Loader=Loader) 

Traceback (most recent call last): 
    File "/home/ubuntu/workspace/Amazon-Products-Crawler-1/config_files/test_yaml.py", line 10, in <module> 
    data = load(f, Loader=Loader) 
    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 36, in get_single_node 
    document = self.compose_document() 
    File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 58, in compose_document 
    self.get_event() 
    File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 118, in get_event 
    self.current_event = self.state() 
    File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 193, in parse_document_end 
    token = self.peek_token() 
    File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 128, in peek_token 
    self.fetch_more_tokens() 
    File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 220, in fetch_more_tokens 
    return self.fetch_value() 
    File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 580, in fetch_value 
    self.get_mark()) 
yaml.scanner.ScannerError: mapping values are not allowed here 
    in "amazon.yaml", line 6, column 9 

Odpowiedz

28

Spróbuj wstawić spacje po dwukropkach.

+8

Prostym sposobem na poprawienie odpowiedzi jest wyświetlenie prawidłowo sformatowanego pliku YAML. –

2

Pliki yaml nie akceptują wartości bezpośrednio po znaku dwukropka w treści pliku. Wpisz wartość po spacji, zapisz plik i uruchom ponownie, błąd zniknie. Napotkałem podobny błąd podczas mojej automatyzacji za pomocą BDD i naprawiłem to po wielu debugowaniach.

Powiązane problemy