首页 > 解决方案 > 在 Windows 上使用 python 启动分离的无限进程并将输出通过管道传输到文件中

问题描述

我正在尝试使用 python 启动一个无限运行的进程并将其输出到文件中。在 python 可执行文件退出后,新创建的进程应该继续运行。当python使用以下代码退出时,我能够启动一个进程并使其保持运行:

subprocess.Popen(command_list, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.CREATE_BREAKAWAY_FROM_JOB)

现在我正在尝试将已启动进程的输出通过管道传输到一个文件中,但我无法让它与分离进程一起工作。

关于如何实现这一目标的任何建议?

请注意,我正在尝试在 Windows 上实现这一点。

标签: pythonpython-3.xwindowssubprocess

解决方案


您是否尝试过将stderrstdout重定向到两个文件:

from subprocess import Popen

from subprocess import DEVNULL
from subprocess import DETACHED_PROCESS
from subprocess import CREATE_NEW_PROCESS_GROUP
from subprocess import CREATE_BREAKAWAY_FROM_JOB

command_list = ...

creationflags = DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP | CREATE_BREAKAWAY_FROM_JOB

with open("stderr.txt", mode="wb") as out, open("stdout.txt", mode="wb") as err:
    Popen(command_list, creationflags=creationflags, stdin=DEVNULL, stdout=out, stderr=err)

确保检查stderr.txtstdout.txt,因为您的流程的输出可能会被重定向到其中一个。


推荐阅读