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文件来执行此操作。
有谁知道我怎么做到这一点?无论如何,谢谢你的考虑。
答案 0 :(得分:0)
foo.py在你的控制之下吗?如果是,只需更改它,以便可以通过作为模块导入并与之交互来运行它。
如果不是,您可能需要将输出捕获为字符串并从中重新构建变量bar
。
如何捕获子进程的输出,例如:
Running shell command from Python and capturing the output