Python 打开可执行文件,但不会自行关闭

Python opens executable, but it doesn't close on its own

小背景:Code::Blocks 是一个带有 C++ 集成编译器的 IDE。创建 C++ 项目时,它会创建一个 .exe 文件,因此您可以 运行 项目。

所以现在我想 运行 使用 Python 脚本(使用 VSCode)的可执行文件。我尝试了subprocess.call(), subprocess.run() 和subprocess.Popen(),它们都启动了后台进程,但它没有编译,所以它只是保持运行 在任务管理器上。如果我 运行 手动(通过双击它)然后它打开,它关闭并且我在输出文件中得到我的正确答案。

This is the C++ project folder for the problem "kino" :

This is a photo with the .exe on the Task Manager :

这是我的 Python 代码:

process = subprocess.run([r'C:\Users\Documents\kino\kino.exe'], shell = True)

如果你还是不明白我的问题,here is a video describing it.

使用pywin32搞定。 这样的事情将解决您的问题

import win32com.client
 app = win32com.client.Dispatch("WScript.Shell")
 app.Run('Path/Yourexe.exe')

subprocess.run 不会捕获 spawn 进程的输出,但是没有理由让它在后台保留 运行。试试下面的例子,我刚刚在我的 linux(用一个简单的 'hello world' 程序)中检查了这个,所以如果它对你不起作用那么它可能是 OS 特定问题。

p = subprocess.Popen(['C:\Users\Documents\kino\kino.exe'], stdout=subprocess.PIPE)
#out, err = p.communicate()
print(p.stdout.read())

我解决问题的方法是 运行 使用 ./ 命令的可执行文件。所以,我做了类似

process = subprocess.run('./kino.exe', shell = True)