Python 调用(运行)其他文件
在 Python 中可以方便地使用 os 模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控制运行的进程,可以使用 win32process 模块中的函数。
1 使用 os.system 函数运行其他程序
2 使用 ShellExecute 函数运行其他程序
1 使用 os.system 函数运行其他程序
os 模块中的 system() 函数可以方便地运行其他程序或者脚本。其函数原型如下所示。
os.system(command)
其参数含义如下所示。
command 要执行的命令,相当于在 Windows 的 cmd 窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数。
以下实例实现通过 os.system() 函数打开系统的记事本程序。
>>> import os
# 使用os.system()函数打开记事本程序
>>> os.system('notepad')
0 # 关闭记事本后的返回值
# 向记事本传递参数,打开python.txt文件
>>> os.system('notepad python.txt')
补充:若出现 system 命令打不开文件时,可以手动查看下文件是否受损,在文件未受损的情况下,仍打不开文件,可以使用复合语句或者多个语句。
于是将本来的直接用 sysem()调用代码改为单步执行,将在 cmd 下进行的操作全部都整合在一起利用 sysem() 进行调用:
例如:原代码:
exe_path = '"'+ os.path.abspath(os.path.join(os.path.dirname(__file__)))+'\Draw.exe' + '"'
os.system(exe_path)
修改为:
os.system("cd /d {} & start Draw.exe".format(os.path.abspath(os.path.join(os.path.dirname(__file__)))))
2 使用 ShellExecute 函数运行其他程序
除了使用 os 模块中的 os.system()函数以外,还可以使用 win32api 模块中的 ShellExecute() 函数。其函数如下所示。
ShellExecute(hwnd, op , file , params , dir , bShow)
其参数含义如下所示。
hwnd:父窗口的句柄,如果没有父窗口,则为 0。
op:要进行的操作,为“open”、“print”或者为空。
file:要运行的程序,或者打开的脚本。
params:要向程序传递的参数,如果打开的为文件,则为空。
dir:程序初始化的目录。
bShow:是否显示窗口。
以下实例使用 ShellExecute 函数运行其他程序。
>>> import win32api
# 打开记事本程序,在后台运行,即显示记事本程序的窗口
>>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',0)
# 打开记事本程序,在前台运行
>>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',1)
# 向记事本传递参数,打开python.txt
>>> win32api.ShellExecute(0, 'open', 'notepad.exe', 'python.txt','',1)
# 在默认浏览器中打开http://www.python.org网站
>>> win32api.ShellExecute(0, 'open', 'http://www.python.org', '','',1)
# 在默认的媒体播放器中播放E:\song.wma
>>> win32api.ShellExecute(0, 'open', 'E:\\song.wma', '','',1)
# 运行位于E:\book\code目录中的MessageBox.py脚本
>>> win32api.ShellExecute(0, 'open', 'E:\\book\\code\\MessageBox.py', '','',1)
可以看出,使用 ShellExecute 函数,就相当于在资源管理器中双击文件图标一样,系统会打开相应的应用程序执行操作。
👍