解析YAML时出现奇怪的错误:

yaml.scanner.ScannerError: mapping values are not allowed here

根据YAML Lint,我尝试读取的YAML文件有效

另一个奇怪的事情是,它可以在我的笔记本电脑(Arch Linux)上正常运行,但在服务器(Ubuntu)上却无法正常运行。 尽管两台机器上的PyYAML版本都相同。

在stackoverflow上看到过其他帖子,人们在冒号后缺少空格 ,但我没有丢失任何空格。

这是完整的YAML文件:

pipeline:
    - read:
            input: /home/omnibrain/projects/company/data/data.csv
            output: some_data
    - filter:
            input: some_data
            filtername: latlng_filter
            minlat: 32.5
            maxlat: 32.9
            minlng: -117.4
            maxlng: -117.0
    - enhance:
            input: some_data
            enhancername: geo_enhancer
            fields: zip
    - write:
            input: some_data
            writername: csv_writer
            output_dir: /home/omnibrain/outputs
            columns: [id, latitude, longitude, zip, networktype]
            filename: example1 # the output filename

这是完整的堆栈跟踪:

Traceback (most recent call last):
  File "/usr/local/bin/someproject", line 9, in <module>
    load_entry_point('someproject==0.0.1', 'console_scripts', 'someproject')()
  File "/usr/local/lib/python3.4/dist-packages/someproject-0.0.1-py3.4.egg/someproject/__init__.py", line 19, in main
    pipeline.Pipeline(parser.parse_args().scriptfile).start()
  File "/usr/local/lib/python3.4/dist-packages/someproject-0.0.1-py3.4.egg/someproject/pipeline/pipeline.py", line 20, in __init__
    self._raw_pipeline = self._parse_yaml(yamlscript)
  File "/usr/local/lib/python3.4/dist-packages/someproject-0.0.1-py3.4.egg/someproject/pipeline/pipeline.py", line 55, in _parse_yaml
    data = yaml.load(yamlscript)
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/__init__.py", line 72, in load
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/constructor.py", line 35, in get_single_data
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 36, in get_single_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 55, in compose_document
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 84, in compose_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 133, in compose_mapping_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 82, in compose_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 111, in compose_sequence_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 84, in compose_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 133, in compose_mapping_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 84, in compose_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/composer.py", line 127, in compose_mapping_node
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/parser.py", line 98, in check_event
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/parser.py", line 428, in parse_block_mapping_key
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/scanner.py", line 116, in check_token
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/scanner.py", line 220, in fetch_more_tokens
  File "/usr/local/lib/python3.4/dist-packages/PyYAML-3.11-py3.4-linux-x86_64.egg/yaml/scanner.py", line 580, in fetch_value
yaml.scanner.ScannerError: mapping values are not allowed here
  in "./test1.yaml", line 3, column 93

#1楼 票数:4

在冒号之后您不会丢失任何空格,在以input: /home/omnibrain/projects/company/data/data.csv开头的行中有太多空格input: /home/omnibrain/projects/company/data/data.csv 这就是为什么您看到第3 行第93列

整行内容如下:

      input: /home/omnibrain/projects/company/data/data.csv                           output: some_data

它也应该有一些有趣的字符,使您的显示混乱,就像您通常会看到一个字符串一样

...                           output: some_data

此处不允许的映射下方。

如果文件看起来相同,则通常会发生这种差异,但实际上并非如此,例如,从一个终端复制粘贴到另一个终端之后。 或粘贴到类似YAMLlint的网站后。

在两个系统上生成一个md5sum ,以检查文件是否确实相同。 在YAML文件上使用od -c检查它是否存在奇怪的字符。

  ask by omnibrain translate from so

未解决问题?本站智能推荐:

4回复

Python 和 PYAML - yaml.scanner.ScannerError:此处不允许映射值

我在 ubunty 64 上使用 python 2.7 并使用 PyYAML-3.10 下面是我的 yaml 文件: 当我运行以下代码时,出现以下错误。 但是,如果我删除 treeroot 上方的行,代码将起作用:
2回复

使用Python读取YAML文件会导致yaml.scanner.ScannerError:此处不允许映射值

我正在使用以下代码: 试图读取my_config.yaml : 但出现以下错误: 这是我的装置: 知道我在这里错过了什么吗?
1回复

yaml.scanner.ScannerError:在此上下文中不允许映射值(Python黑盒测试帮助)

我正在尝试使用PBBT调用.yaml文件的输入,然后将运行.py文件。 但是我一直收到以下错误“ yaml.constructor.ConstructorError:预期在“ input12sys.yaml”的第3行第3列的测试记录序列(编辑)。 我将为输入文件和.yaml附加实际的pyth
1回复

ScannerError:“config.yaml”中不允许映射值?

我想为所有项目配置配置一个 yaml 文件,但是下面的文件我无法读取/解析它? 这是我得到的错误,我在这里做错了什么?
1回复

PyYAML抛出无法解决的错误

我正在使用YAML文件,并且只能使用“ |” 用于文字引号。 我正在使用PyYAML。 此处的主要问题是,它适用于以下代码中的第一级“字典”键,但不适用于第二级“注释”键。 我尝试使用“>”“ | +”“ |-”,但是没有任何效果。 我检查了语法上http://
1回复

ScannerError:此处不允许使用映射值

使用Tavern并尝试针对此Yaml运行tavern-ci: 正在获取E ScannerError:“ / Users / xxx / xxx / xxx / test_poc.tavern.yaml”第3行第9列中的此处E不允许映射值 在没有喜悦的情况下尝试了这里介绍的许多解决方
3回复

yaml.scanner.ScannerError:扫描指令时

我使用PyYAML来读取文件,python代码是: demo.yml: 然后错误是: 谁来帮帮我?
1回复

PyYAML找到不正确的YAML语法错误行

我正在阅读YAML文件。 如果存在导致异常的语法错误,我将异常发送到记录器。 有什么方法可以在我的日志消息中识别YAML文件的哪一行包含语法错误?