【发布时间】:2019-07-28 15:10:13
【问题描述】:
我有两个文件:parent.py 和 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')
父.py:
import subprocess
subprocess.run(["python", "child.py"], capture_output=True)
我的理解是capture_output 选项应该根据需要显示输出,但情况似乎并非如此。 (这来自对我的问题Consecutively execute multiple python scripts 的评论回复,我想在这里以更清晰的方式提出)。
父文件和子文件都位于同一个工作目录中,我使用的是 Spyder(不确定这是否重要)。我看到是什么让我认为子文件正在运行In: runfile('C:/.../parent.py', wdir='C:/.../testing'),但我既没有看到 print() 命令,也没有看到控制台中显示的优化命令的显示。运行父级后,我也无法访问子级变量。
如何查看输出(来自 print() 和 optimize(.,disp=True) 命令)以及在运行父脚本时访问子脚本中的变量?
【问题讨论】:
-
您希望子脚本的输出显示还是捕获以供父脚本使用? (请注意,您不能同时进行这两项操作;您可以做的最好的事情是捕获并重新显示,如果需要,可能是实时的。)
-
如果我不能同时做这两件事,我会偏好显示(这样我就可以看到优化是否挂在其中一个子脚本中)。但是,听起来您选择实时捕获和重新显示输出是最佳选择。
标签: python parent-child