我使用的是python 2.7并使用PyYAML-3.10
以下是我的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
当我运行以下代码时,我得到以下错误。但是,如果删除treeroot上方的行,则代码可以正常工作:
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
答案 0 :(得分:35)
尝试在冒号后放置空格。
答案 1 :(得分:5)
yaml文件不接受文件内容中冒号后面的值。在空格后输入值,保存文件并再次运行,错误将消失。我在使用BDD进行自动化时遇到了类似的错误,经过大量调试后得到了修复。
答案 2 :(得分:1)
对于任何来这里并发现即使冒号后面有空格的人,他们仍然会收到此错误
如果您从某种格式的源复制yaml文本(对我来说这是一条Slack消息),您也会收到此错误。这将以无形的方式交换标准YAML读取器无法读取但看起来相同的非ASCII字符。
解决方案是仅从原始非ASCII源进行复制。
答案 3 :(得分:0)
如果有人来到这里并正确设置了格式和空格,但错误仍然存在。
检查版本后是否有冒号! (我面无表情的人)
错误:
version '3.7'
services:
rabbitmq3:
image: rabbitmq:3-management
已修复:
version: '3.7'
services:
rabbitmq3:
image: rabbitmq:3-management