2012-01-29 4 views
9

Sono in ubunty 64 con Python 2.7 e utilizzando PyYAML-3.10Python e PYAML - yaml.scanner.ScannerError: valori di mappatura non sono concessi qui

Sotto è il mio file 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 

Quando Corro il codice qui sotto ottengo il seguente errore. Ma se rimuovo le righe sopra il treeroot il codice funziona:

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 

risposta

28

Prova a mettere gli spazi dopo i due punti.

+8

Un modo semplice per migliorare la risposta consiste nel mostrare il file YAML formattato correttamente. –

2

I file yaml non accettano i valori immediatamente dopo il segno dei due punti nel contenuto del file. Immettere il valore dopo uno spazio, salvare il file ed eseguire nuovamente, l'errore sarà scomparso. Avevo riscontrato l'errore simile durante la mia automazione usando BDD e l'ho risolto dopo un sacco di debug.

Problemi correlati