📅  最后修改于: 2023-12-03 15:04:15.722000             🧑  作者: Mango
有时候,我们需要在 Python 程序中执行一些外部的批处理脚本(bat),但是默认情况下,执行 bat 文件会在当前 cmd 窗口中执行,不太美观。那么,如何让 Python 在新的 cmd 窗口中运行 bat 文件呢?
我们可以使用 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)
除了 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 函数。无论使用哪种方法,都可以让程序更加美观和易于查看执行结果。