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)
小背景: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)