使用参数在python文件上与execfile / subprocess.call中的对象进行交互

时间:2016-09-30 07:08:24

标签: python ipython

Python新手在这里。

我正在尝试与python文件中的变量/对象进行交互,该文件需要其数据的参数。 假设我只能从参数获取此数据,而不是创建一个包含将传递的参数的脚本(这意味着我必须使用execfile或subprocess.call)。

让我们说这是我的python文件,foo.py:

bar = 123
print("ran foo.py, bar = %d" % bar)

当然,解析参数的文件会更多,但这是无关紧要的。

现在,在python shell中(终端中的python或ipython):

>>> import subprocess
>>> subprocess.call("python foo.py 'args'", shell=True)
ran foo.py, bar = 123
0
>>> bar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'bar' is not defined

如上面的示例输出所示,在foo.py。

的stdout之后未定义bar

有没有办法与execfile或subprocess.call调用的python文件中的变量或数据对象进行交互?通常我会在REPL中进行评估或在IDE中运行,因此我可以在执行后测试值和对象,但我无法弄清楚如何使用从解析参数构建数据的python文件来执行此操作。

有谁知道我怎么做到这一点?无论如何,谢谢你的考虑。

1 个答案:

答案 0 :(得分:0)

foo.py在你的控制之下吗?如果是,只需更改它,以便可以通过作为模块导入并与之交互来运行它。 如果不是,您可能需要将输出捕获为字符串并从中重新构建变量bar。 如何捕获子进程的输出,例如: Running shell command from Python and capturing the output