【发布时间】:2020-02-13 14:44:29
【问题描述】:
我正在尝试从 conan.txt 文件中提取 BINPATH、LIBPATH、CPPPATH,如下所示:
conan = {
"conan" : {
"CPPPATH" : ['something'],
"BINPATH" : ['something'],
"LIBS" : ['something'],
"CPPDEFINES" : [],
"CXXFLAGS" : [],
"CCFLAGS" : [],
"SHLINKFLAGS" : [],
"LINKFLAGS" : [],
},
"conan_version" : "None",
"boost" : {
"CPPPATH" : ['C:\\.conan\\123456\\1\\include'],
"LIBPATH" : ['C:\\.conan\\123456\\1\\lib'],
"BINPATH" : ['C:\\.conan\\123456\\1\\lib'],
"LIBS" : [],
"CPPDEFINES" : [],
"CXXFLAGS" : [],
"CCFLAGS" : [],
"SHLINKFLAGS" : [],
"LINKFLAGS" : [],
},
"boost_version" : "1.69.0"
}
Return('conan')
我有一个 scons /python 文件,它需要 CPPPATH、BINPATH、LIBPATH 值作为变量。 我正在尝试在 Sconscript 中的以下函数中提取这些值:
def getCPPPath():
data = {'Return': lambda x: False}
with open(file.txt, 'r') as f:
exec(f.read(), data)
return (data["conan"]["conan"]["CPPPATH"][0])
print ("Path is:", ["conan"]["conan"]["CPPPATH"][0])
这给了我一个错误:
scons: *** Return of non-existent variable ''conan''
我怎样才能做到这一点?
【问题讨论】:
-
柯南不是 dict 还是 json 吗?
-
看起来像一个有效的 python 代码。您可以使用
exec(f.read(), myvar)然后将值作为myvar['conan']['boost']['BINPATH']等 -
@Ch3steR,我在配方文件中使用了 scons 生成器来生成这个文本文件
-
@hurlenko:我的代码返回此错误:Traceback(最近一次调用最后一次):文件“testfile3.py”,第 3 行,在
exec(f.read(), data) 文件中“ ”,第 83 行,在 NameError: name 'Return' is not defined