是否可以在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']
答案 0 :(得分:0)
YAML中没有机制可以引用另一个YAML文档中的一个文档。
您必须通过解释加载初始YAML文档的程序中的信息来完成此操作。无论你是通过明确的逻辑做到这一点,还是通过使用某些标签都没有做出实际的改变。
请注意,允许在ruamel.yaml中解释!!python/name:.....`` (via yaml=YAML(typ='unsafe')
形式的标签或在PyYAML中解释load()
是不安全的,并且从来没有必要。