【发布时间】:2020-04-11 20:27:47
【问题描述】:
我试图在使用子进程运行 python 应用程序时捕获所有输出。我已经使用 subprocess.run 和 subprocess.Popen 尝试了几种变体。运行的 python 应用程序执行 perl 脚本并捕获此输出。
import subprocess as sp
print("some data")
print("some data")
x = subprocess.run(['script.py', 'some', 'options'], stdout=sp.PIPE, stderr=sp.PIPE)
proc_out = sp.stdout
proc_err = sp.stderr
我还尝试将 '> out 2>&1' 添加到列表中,尝试使用 capture_output=True,尝试重定向 stdout/stderr。奇怪的是,我试图捕获的打印语句不再显示。
所以,它是一个 python 应用程序(它的输出被捕获),它使用子进程调用另一个 python 应用程序(无法捕获它的输出),它又调用一个 perl 函数(它的输出被捕获)。
我已经完成了大多数引用捕获所有数据的线程,但仍然没有运气。
有什么想法吗?
【问题讨论】:
-
My question 有点矫枉过正,但可能会为您提供一个新的起点。
-
谢谢,看来我的问题已通过将 python 添加为列表的第一个元素来解决。 subprocess.run(['python', cmd, args...) 谢谢。
标签: python