运行儿童Python脚本以及显示输出(打印和功能内显示)和来自Child的访问变量



我有两个文件:parent.py and child.py。我希望使用父级运行子脚本,但是我希望子脚本中的显示器出现在控制台窗口中。示例文件如下:

child.py:

from scipy import optimize
x0=1
def f(x):
    return x**2
res = optimize.fmin(f, x0, disp=True)
print('print printed')

parent.py:

import subprocess
subprocess.run(["python", "child.py"], capture_output=True)

我的理解是capture_output选项应根据需要显示输出,但事实并非如此。(这来自我的问题的评论回复,连续执行多个Python脚本,我试图以更清晰的方式询问)。

父母和子文件都位于同一工作目录内,我正在使用Spyder(不确定这是否重要)。我看到了什么使我认为子文件正在运行In: runfile('C:/.../parent.py', wdir='C:/.../testing'),但是我既没有看到Print()命令,也没有从控制台中显示的"优化命令"显示。经营父母后,我也无法访问子变量。

如何查看输出(从print()和优化(。disp = true)命令),以及在运行父脚本时访问子脚本中的变量?

似乎答案是在父文件中使用以下代码:

exec(open('child.py').read())

这将根据需要运行文件,允许访问由子文件创建的变量,并显示所有所需的输出。

要在应得的地方给予信用,我在这里找到了语法:python 3中的执行依据是什么?这解释了我以前使用exec()尝试不正确的尝试。

也许其他人可以通过包括与Exec()相关的不安全感的替代方案来改善答案。

最新更新