📜  python 在新的 cmd 窗口中运行 bat - Python (1)

📅  最后修改于: 2023-12-03 15:04:15.722000             🧑  作者: Mango

Python 在新的 cmd 窗口中运行 bat

有时候,我们需要在 Python 程序中执行一些外部的批处理脚本(bat),但是默认情况下,执行 bat 文件会在当前 cmd 窗口中执行,不太美观。那么,如何让 Python 在新的 cmd 窗口中运行 bat 文件呢?

方法一:使用 os 模块的 system 函数

我们可以使用 os 模块的 system 函数来执行 bat 文件,而且可以指定在新的 cmd 窗口中打开。示例代码如下:

import os

os.system('start cmd /c "test.bat"')

其中,start 命令表示在新的 cmd 窗口中打开,/c 表示执行完命令后关闭窗口,test.bat 是要执行的批处理脚本。

需要注意的是,os.system 函数会阻塞当前进程,直到执行完毕才会继续执行后续代码。如果希望执行完毕后立即返回,可以使用 subprocess 模块。示例代码如下:

import subprocess

subprocess.Popen('start cmd /c "test.bat"', shell=True)
方法二:使用 win32api 模块的 ShellExecute 函数

除了 os 模块,还可以使用 win32api 模块的 ShellExecute 函数来启动新的 cmd 窗口执行 bat 文件。示例代码如下:

import win32api

win32api.ShellExecute(0, 'open', 'cmd', '/c test.bat', '', 1)

其中,0 表示使用默认应用程序打开,'open' 表示打开方式,'cmd' 表示要执行的程序,'/c test.bat' 表示要执行的命令。

需要注意的是,win32api 模块需要通过第三方库 pywin32 安装。

总结

Python 在新的 cmd 窗口中运行 bat 文件,可以使用 os 模块的 system 函数和 subprocess 模块,也可以使用 win32api 模块的 ShellExecute 函数。无论使用哪种方法,都可以让程序更加美观和易于查看执行结果。