我的印象是调用脚本可以访问被调用脚本的命名空间。以下是我的调用脚本的代码部分:
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。我怎么能解决这个问题?
答案 0 :(得分:1)
您无法访问此内容。当您到达脚本的最后一行时,被调用的脚本已完成执行。因此它的变量不再存在。您需要以其他方式将此数据发送到调用脚本(例如,在标准输出上打印它的被调用脚本以及从那里获取它的调用脚本)。
即使它没有完成执行,我也不认为你可以访问它的变量。换句话说,你的印象是错误的: - )
答案 1 :(得分:1)
subprocess.Popen()
允许您运行命令并从其标准输出读取和/或写入其标准输入。 popen 一个进程没有多大意义,然后等待它完成而不与它通信。这非常像os.system()
如果您想要precision.py
中的变量,请执行以下操作:
import precision
print "precision variable value =", precision.precision
当然,导入意味着执行不在类或def
的