我写的yaml文件是这样的
with open(fname, "w") as f:
yaml.safe_dump({'allow':'', 'deny': ''}, f,
default_flow_style=False, width=50, indent=4)
这将输出以下内容:
allow: ''
我想输出为
allow:
我该怎么做呢?
发布于 2018-12-20 19:43:45
对于要从python读取的None
类型,请在yaml中使用null
一个像这样的YAML文件test.yml
foo: null
bar: null
将由python读取为
import yaml
test = yaml.load(open('./test.yml'))
print(test)
foo: None
bar: None
发布于 2015-05-09 13:59:49
如果您加载YAML src
allow:
在Python中,你可以将None
赋值给键allow
,这是正确的行为。
如果您使用ruamel.yaml (我是它的作者),并且它是RoundTripDumper
,那么None
就是您想要的(这是IMO最具可读性的,尽管不明确):
import ruamel.yaml
print ruamel.yaml.dump(dict(allow=None), Dumper=ruamel.yaml.RoundTripDumper)
将为您提供:
allow:
您还可以正确地往返执行以下操作:
import ruamel.yaml
yaml_src = """
allow:
key2: Hello # some test
"""
data = ruamel.yaml.load(yaml_src, ruamel.yaml.RoundTripLoader)
print('#### 1')
print(data['allow'])
print('#### 2')
print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper))
print('#### 3')
print(type(data))
要获取输出,请执行以下操作:
#### 1
None
#### 2
allow:
key2: Hello # some test
#### 3
<class 'ruamel.yaml.comments.CommentedMap'>
在上面的代码中,data
是ordereddict的子类,这对于跟踪输入的流样式、处理附加到行的注释、键的顺序等是必要的。
这样的子类可以动态创建,但通常更容易从一些可读的和格式良好的YAML代码(可能已经保存在磁盘上)开始,然后更新/扩展这些值。
发布于 2016-05-26 02:36:06
from yaml import SafeDumper
import yaml
data = {'deny': None, 'allow': None}
SafeDumper.add_representer(
type(None),
lambda dumper, value: dumper.represent_scalar(u'tag:yaml.org,2002:null', '')
)
with open('./yadayada.yaml', 'w') as output:
yaml.safe_dump(data, output, default_flow_style=False)
有一种方法可以内置到python yaml本身中。上面的代码将生成一个包含以下内容的文件:
allow:
deny:
https://stackoverflow.com/questions/30134110
复制相似问题