在 Python 3.10 中,如何将程序作为分离进程启动,而该程序的输出不会发送到脚本的终端?

问题描述 投票:0回答:0

操作系统:Windows 11

Python 版本:3.10

上下文

我有一个带有 GUI 的 Python 应用程序。用户可以从此 GUI 中按下一个按钮,启动带有各种参数的第三方程序。一旦这个程序启动,它应该独立于我的 Python 程序(即,如果我的程序终止,第三方程序应该保持运行)。

我的代码

过去,我使用

subprocess
模块取得了成功。在我的应用程序中,我使用这一行来启动有问题的程序:

subprocess.Popen([EXECPATH, EXECARG1, EXECARG2], creationflags=subprocess.DETACHED_PROCESS)

问题

分离进程的输出显示在my Python 程序的终端中。它非常冗长并且占用大量空间。我的项目的用户报告了他们的担忧,因为他们认为这个输出与我的程序有关,但事实并非如此。奇怪的是,这不会发生在我项目的所有用户上。它只是在 today 才开始发生在我身上,而且我几个月来一直在使用相同的代码而没有经历过它。

我尝试过的事情

我试过将进程的输出定向到空对象:

with open(os.devnull, "w") as devnull:
    subprocess.Popen([EXECPATH, EXECARG1, EXECARG2], creationflags=subprocess.DETACHED_PROCESS, stdout=devnull, stderr=devnull)
subprocess.Popen([EXECPATH, EXECARG1, EXECARG2], creationflags=subprocess.DETACHED_PROCESS, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
subprocess.Popen([EXECPATH, EXECARG1, EXECARG2], creationflags=subprocess.DETACHED_PROCESS, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
python terminal subprocess popen
© www.soinside.com 2019 - 2024. All rights reserved.