我正在使用以下代码:
var mObject: MObject = mObjectUndecided?.let{ mObject1 ->
// Do Something
mObject1.mObjectNext?.let { mObject2 ->
// Do Something
mObject2.mObjectNext?.let { mObject3 ->
// Do Something
}
// Do Something
}
// Do Something
it // return it if its not null
} ?: run {
MObject().also {
// Do Something
}
}
尝试读取import yaml
with open('/Users/edamame/my_logins/my_config.yaml', 'r') as infile:
db_cfg = yaml.safe_load(infile)
:
my_config.yaml
但出现以下错误:
database_info:
username: edamame
password: mypassword
host: 1.2.3.4
port: 3306
database: mydb
答案 0 :(得分:2)
您显示的输入不会产生该错误。您可以尝试here:
您很可能会有一些空格差异,最有可能在port: 3306
行中。
请注意,由于PyYAML早于最新的YAML标准(2009年为1.2),因此
尽管标准没有考虑,但仍将某些Unicode空格字符视为空格。
如果通过查看文件找不到导致此问题的原因,则有两个可能的选择:
后者在PyYAML中不容易完成,因为它将在写入时对映射的键进行排序。
import sys
import ruamel.yaml
from ruamel.yaml.comments import CommentedMap as cm
data = cm()
data['database_info'] = d = cm()
d['username'] = 'edamame'
d['password'] = 'mypassword'
d['host'] = '1.2.3.4'
d['port'] = 3306
d['database'] = 'mydb'
yaml = ruamel.yaml.YAML()
yaml.indent(mapping=4)
with open('my_config.yaml', 'w') as ofp:
yaml.dump(data, ofp)
它将在my_config.yaml
中生成以下内容:
database_info:
username: edamame
password: mypassword
host: 1.2.3.4
port: 3306
database: mydb
PyYAML甚至应能够读取的文件。
答案 1 :(得分:1)
在运行Python 2和3且PyYAML == 3.13的虚拟环境中,我无法使用几乎相同的代码进行复制。
>>> import yaml
>>> with open('sample.yaml', 'r') as infile:
... db_cfg = yaml.safe_load(infile)
...
>>> db_cfg
{'database_info': {'username': 'edamame', 'password': 'mypassword', 'host': '1.2.3.4', 'port': 3306, 'database': 'mydb'}}
您是否使用与示例相同的确切输入来得到此错误?
否则,请确保您输入的格式正确。每个冒号后面是否有空格?事情缩进正确吗?