Python 什么是';yaml.parser.ParserError:应为'&书信电报;文档开始>';,但是发现'&书信电报;块映射开始>'';什么意思?
我有以下YAML文件:Python 什么是';yaml.parser.ParserError:应为'&书信电报;文档开始>';,但是发现'&书信电报;块映射开始>'';什么意思?,python,yaml,configuration-files,Python,Yaml,Configuration Files,我有以下YAML文件: [mysqld] user: "mysql" pid-file: /var/run/mysqld/mysqld.pid skip-external-locking old_passwords: 1 skip-bdb skip-innodb create_key: yes needs_agent: no knows_oop: True likes_emacs: TRUE women: - Mary Smith - Susan Williams 以及以下Py
[mysqld]
user: "mysql"
pid-file: /var/run/mysqld/mysqld.pid
skip-external-locking
old_passwords: 1
skip-bdb
skip-innodb
create_key: yes
needs_agent: no
knows_oop: True
likes_emacs: TRUE
women:
- Mary Smith
- Susan Williams
以及以下Python代码:
#!/usr/bin/env python
import yaml
with open("config.yml") as f:
sample_config = f.read()
print(yaml.load(sample_config))
但它给了我:
Traceback (most recent call last):
File "/home/moose/Desktop/bla.py", line 9, in <module>
print(yaml.load(sample_config))
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 39, in get_single_node
if not self.check_event(StreamEndEvent):
File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 98, in check_event
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "/home/moose/Desktop/bla.py"]
[dir: /home/moose/Desktop]
[path: /usr/local/texlive/2013/bin/x86_64-linux:/home/moose/google-cloud-sdk/bin:/home/moose/Downloads/google_appengine:/usr/local/texlive/2013/bin/x86_64-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games] self.current_event = self.state()
File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 174, in parse_document_start
self.peek_token().start_mark)
yaml.parser.ParserError: expected '<document start>', but found '<block mapping start>'
in "<string>", line 2, column 1:
user: "mysql"
回溯(最近一次呼叫最后一次):
文件“/home/moose/Desktop/bla.py”,第9行,在
打印(yaml.load(示例配置))
文件“/usr/local/lib/python2.7/dist-packages/yaml/_-init__.py”,第71行,已加载
返回加载器。获取单个数据()
文件“/usr/local/lib/python2.7/dist packages/yaml/constructor.py”,第37行,在get\u single\u数据中
node=self.get\u single\u node()
文件“/usr/local/lib/python2.7/dist packages/yaml/composer.py”,第39行,在get\u single\u节点中
如果不是自检查事件(StreamEndEvent):
文件“/usr/local/lib/python2.7/dist packages/yaml/parser.py”,第98行,在check_事件中
[在0.1s内完成,退出代码为1]
[shell_cmd:python-u”/home/moose/Desktop/bla.py“]
[dir:/home/moose/Desktop]
[path:/usr/local/texlive/2013/bin/x86\u 64-linux:/home/moose/google cloud sdk/bin:/home/moose/Downloads/google\u appengine:/usr/local/texlive/2013/bin/x86\u 64-linux:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games]self.current\u event=self.state()
文件“/usr/local/lib/python2.7/dist packages/yaml/parser.py”,第174行,在parse_document_start中
self.peek_标记().start_标记)
yaml.parser.ParserError:应为“”,但找到“”
在“”第2行第1列中:
用户:“mysql”
我不知道是什么
expected '<document start>', but found '<block mapping start>'
应为“”,但找到“”
方法以及如何修复它。什么是
,什么是
?您的文件不是有效的YAML。它看起来像是YAML和
- 不能在YAML中定义类似于
的块。如果要定义相关属性的集合,请使用具有嵌套键的列表:[mysql]
- service: name: mysql type: database port: 3306 - service: name: ssh type: remote access port: 22
- 您不能使用像
。每个属性都需要一个值。改用跳过外部锁定这样的简单词语
跳过外部锁定:true
name: mysqld
user: mysql
pid-file: /var/run/mysqld/mysqld.pid
skip-external-locking: true
old_passwords: 1
skip-bdb: true
skip-innodb: true
create_key: yes
needs_agent: no
knows_oop: True
likes_emacs: TRUE
women:
- Mary Smith
- Susan Williams
非常感谢你。我很困惑,因为我认为ConfigParser会使用YAML。