首页 > 解决方案 > Python子进程打开控制台并将stdout/stderr保存到文件

问题描述

我在这里有示例代码:

from subprocess import *

def runSubprocess(cmd,flog,console = False):
    if console:
        p=Popen(    [sys.executable]+cmd,
                    cwd = os.getcwd(),
                    shell = False,
                    creationflags=CREATE_NEW_CONSOLE
                    #creationflags=CREATE_NEW_PROCESS_GROUP
                    )
    else:
        if flog != '':
            f = open(flog, "w")
        else:
            f = PIPE
        p=Popen(    [sys.executable]+cmd,
                    stdout=f,
                    stderr = STDOUT,
                    stdin = PIPE,
                    shell = False,
                    cwd = os.getcwd())
    return p

p=runSubprocess([f],flog,True)
print ('PID ',p.pid )
p.communicate()

print ('Return code = ',p.returncode)

当调用 subprocess 函数时,我想查看我的程序正在运行并将其打印到控制台进行调试。我的脚本有问题。returncode != 0 时如何捕获错误并保存到日志文件以查看?

标签: pythonconsolesubprocess

解决方案


推荐阅读