我有一个描述我的对象的YAML文件
--- !MyData
name: theName
param: parameter
data_file: \\path\to\my\file.csv
我的代码如下
^{pr2}$在初始化时,main使用它来加载数据
with open(self.initFile, 'r', newline='') as ymlfile:
for item in yaml.load_all(ymlfile):
if type(item) is Load:
---- some post init code
一切正常,但是由于我的主代码已经知道了数据文件的完整路径,因为它与yaml在同一个目录中, 有没有办法只给出数据文件的名称而不使用完整路径,这样我就可以在不编辑yaml配置文件的情况下更改位置?因为数据文件是由通过调用的父类加载的全部加载函数我不知道如何给出一个告诉路径值的参数。在
在加载实例中动态获取变量
path
有许多不同的解决方案,包括:load_constructor
中设置工厂上的path
,而不是直接调用Load
。在path
,并让它的__call__
方法进行构造您可以使用后者:
请注意,我必须更改构造函数的第一个参数,否则无法构造}(因为key当然很好),所以我引用了这一点。在
MyData
类型的YAML对象。如果您将param
用作Load.__init__()
的值,则需要定义{运行上面的(在Python3下)将为您提供:
^{pr2}$相关问题 更多 >
编程相关推荐