2012-01-29 11 views
9

estoy en ubunty 64 con Python 2.7 y usando PyYAML-3.10Python y PYAML - yaml.scanner.ScannerError: valores de asignación no están permitidos aquí

A continuación se muestra mi archivo 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 

Cuando Ejecuto el siguiente código, obtengo el siguiente error. Pero si elimino las líneas sobre el treeroot el código funciona:

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 

Respuesta

28

Intenta poner espacios después de los dos puntos.

+8

Una forma simple de mejorar su respuesta sería mostrar el archivo YAML correctamente formateado. –

2

Los archivos yaml no aceptan valores inmediatamente después de la marca de dos puntos en el contenido del archivo. Ingrese el valor después de un espacio, guarde el archivo y vuelva a ejecutar; el error desaparecerá. Encontré el error similar durante mi automatización usando BDD, y lo solucioné después de mucha depuración.

Cuestiones relacionadas