python学习_python如何调用其他程序

python学习_python如何调用其他程序

正在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.baidu.com/', '', 1)   # 用IE阅读器翻开百度网址
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若何挪用其余顺序的具体内容,更多请存眷酷吧易资源网别的相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 python教程 python学习_python如何调用其他程序 https://www.kubayi.com/4913.html

常见问题

相关文章

评论
暂无评论