使用标签访问yaml中的python dict值

时间:2018-02-28 15:40:49

标签: python yaml pyyaml

是否可以在yaml中加载python dict中的值。

我可以使用以下方式访问变量:

!!python/name:mymodule.myfile.myvar

但是这给了整个字典。

尝试使用dict get方法如下:

test: &TEST !!python/object/apply:mymod.myfile.mydict.get ['mykey']

给我以下错误:

yaml.constructor.ConstructorError: while constructing a Python object
cannot find module 'mymod.myfile.mydict' (No module named 'mymod.myfile.mydict'; 'mymod.myfile' is not a package)

我试图这样做,因为我有一堆yaml文件定义我的项目设置,一个是路径目录,我需要将其加载到其他一些yaml文件中,看起来你不能从另一个yaml加载yaml变量

编辑:

我找到了一个解决方案,创建了我自己的函数,它在dict中返回值并调用它:

test: &TEST !!python/object/apply:mymod.myfile.get_dict_value ['mykey']

1 个答案:

答案 0 :(得分:0)

YAML中没有机制可以引用另一个YAML文档中的一个文档。

您必须通过解释加载初始YAML文档的程序中的信息来完成此操作。无论你是通过明确的逻辑做到这一点,还是通过使用某些标签都没有做出实际的改变。

请注意,允许在ruamel.yaml中解释!!python/name:.....`` (via yaml=YAML(typ='unsafe')形式的标签或在PyYAML中解释load()是不安全的,并且从来没有必要。