正在Python中,能够不便地应用os模块来运转其余剧本或许顺序,这样就能够正在剧本中间接应用其余剧本或顺序提供的性能,而不用再次编写完成该性能的代码。为了更好地管制运转的过程,能够应用win32process模块中的函数,假如想进一步管制过程,则能够应用ctype模块,间接挪用kernel32.dll中的函数。上面引见4种形式:
一、os.system()函数
os模块中的system()函数能够不便地运转其余顺序或许剧本,模式以下:
os.system(co妹妹and):co妹妹and: 要执行的饬令,假如要向剧本通报参数,能够应用空格宰割顺序及多个参数
实例:
#关上记事本 os.system('notepad') #用记事本关上aa.txt os.system('notepad aa.txt') #aa.txt文件必需正在以后顺序目次 #间接关上aa.txt os.system('aa.txt') #间接关上Excel文件 os.system('aa.xlsx') #间接关上Word文件 os.system('bb.docx') filepath='测试.xlsx' #关上蕴含中文的文件 os.system(filepath.decode('utf8').encode('GBK'))
二、ShellExecute函数
应用win32api模块中的ShellExecute()函数来运转其余顺序,格局以下
ShellExecute(hwnd, op, file, args, dir, show)
hwnd:父窗口的句柄,假如不父窗口,则为0
op: 要运转的操作,为open,print或许为空
file: 要运转的顺序,或许关上的剧本
args: 要向顺序通报的参数,假如关上的是文件则为空
dir : 顺序初始化的目次
show: 能否显示窗口
应用ShellExecute函数,就相称于正在资本治理器中双击文件图标,零碎会关上相应顺序运转。
import win32api win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 0) # 后盾执行 win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 1) # 前台关上 win32api.ShellExecute(0, 'open', 'notepad.exe', 'wmi.txt', '', 1) # 关上文件 win32api.ShellExecute(0, 'open', 'iexplore.exe', '', '', 1) # 关上IE阅读器 win32api.ShellExecute(0, 'open', 'iexplore.exe', 'https://www.百度.com/', '', 1) # 用IE阅读器关上baidu网址 win32api.ShellExecute(0, 'open', 'mspaint.exe', 'wxqr.png', '', 1) #用零碎附件自带的绘图关上图片wxqr.png
三、CreateProcess
创立过程:
为了便于管制经过剧本运转的顺序,能够应用win32process模块中的CreateProcess()函数创立一个运转相应顺序的过程。其函数格局为: CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)
appName:可执行文件名
cmdLine:饬令行参数
procAttr:过程平安属性
threadAttr:线程平安属性
InheritHandle:承继标记
CreationFlags:创立标记
currentDir:过程确当前目次
Attr:创立顺序的属性
完结过程:
能够应用win32process.TerminateProcess函数来完结已创立的过程, 函数格局以下:
TerminateProcess(handle, exitCode)
handle:要操作的过程句柄
exitCode:过程加入代码
或许应用win32event.WaitForSingleObject期待创立的线程完结,函数格局以下:
WaitForSingleObject(handle, milisecond)
handle : 要操作的过程句柄
milisecond: 期待的工夫,假如为-1,则不断期待.
import win32process # 关上记事本,取得其句柄 handle = win32process.CreateProcess(r'C:\Windows\notepad.exe', '', None, None, 0, win32process.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO()) time.sleep(4) # 终止过程 win32process.TerminateProcess(handle[0], 0) import win32event #期待过程完结 print win32event.WaitForSingleObject(handle[0], -1)
四、应用ctypes挪用kernel32.dll中的函数
应用ctypes模块能够让Python挪用位于静态链接库的函数。
ctypes模块为Python提供了挪用静态链接库中函数的性能。应用ctypes模块能够不便地挪用由C言语编写的静态链接库,并向其通报参数。
ctypes模块界说了C言语中的根本数据类型,而且能够完成C言语中的构造体以及联结体。ctypes模块能够工作正在Windows,Linux,Mac OS等多种操作零碎,根本上完成了跨平台。
实例:
Windows下挪用user32.dll中的MessageBoxA函数。
from ctypes import * user32 = windll.LoadLibrary('user32.dll') a = user32.MessageBoxA(0, str.encode('Hello Ctypes!'), str.encode('Ctypes'), 0) print a
更多Python相干技巧文章,请拜访Python教程栏目进行学习!
以上就是python若何挪用其余顺序的具体内容,更多请存眷资源魔其它相干文章!
标签: python教程 python编程 python使用问题 python如何调用程序
抱歉,评论功能暂时关闭!