21

私はPython 2.7でubunty 64を使用しており、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

以下のコードを実行すると、以下のエラーが発生します。しかし、ツリールートの上の行を削除すると、コードは機能します。

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
4

4 に答える 4

47

コロンの後にスペースを入れてみてください。

于 2012-01-29T18:03:21.423 に答える
19

ここに来て、コロンの後にスペースがあっても、このエラーが発生することに気付いた人のために

フォーマットされたソースから yaml テキストをコピーした場合にも、このエラーが発生する可能性があります (私にとっては Slack メッセージでした)。これにより、標準の YAML リーダーでは読み取れないが同じように見える非 ASCII 文字が目に見えないように交換されます。

解決策は、未加工の非 ASCII ソースからのみコピーすることです。

于 2019-11-20T21:57:12.023 に答える
3

誰かがここに来て、フォーマットとスペースが正しくてもエラーが続く場合。

バージョンの後にコロンがあるかどうかを確認してください。(私は当たり前のように顔をしかめる)

エラー:

version '3.7'

services:
  rabbitmq3:
    image: rabbitmq:3-management

修理済み:

version: '3.7'

services:
  rabbitmq3:
    image: rabbitmq:3-management
于 2020-11-16T21:43:19.433 に答える