1

我的印象是调用脚本可以访问被调用脚本的名称空间。以下是我的调用脚本中的代码部分:

x= 'python precision.py'
args=shlex.split(x)
print args
p=subprocess.Popen(args)
p.wait()

result.write("\tprecision = "+str(precision)+", recall = ")

其中“precision”是被调用脚本“precision.py”中的一个变量。但这给出了一个 NameError。我该如何解决这个问题?

4

2 回答 2

1

subprocess.Popen()允许您运行命令并从其标准输出读取和/或写入其标准输入。弹出一个进程然后等待它完成而不与它通信是没有多大意义的。这很像os.system()

如果您想要一个变量,precision.py请执行以下操作:

import precision

print "precision variable value =", precision.precision

当然,导入意味着执行不在类或def's内的任何语句

于 2013-07-19T09:37:02.103 回答
1

你不能访问这个。当您到达脚本的最后一行时,被调用的脚本已经完成执行。因此它的变量不再存在。您需要以其他方式将此数据发送到调用脚本(例如被调用脚本将其打印在标准输出上,调用脚本从那里获取它)。

即使它没有完成执行,我认为你也不能访问它的变量。换句话说,你的印象是错误的:-)

于 2013-07-19T09:14:23.227 回答