操作系统: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)