python:访问被调用脚本的命名空间

时间:2013-07-19 09:10:13

标签: python namespaces

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

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

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

其中"精度"是被调用脚本中的变量" precision.py"。 但这会产生NameError。我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

import precision

print "precision variable value =", precision.precision

当然,导入意味着执行不在类或def

内的任何语句