python如何调用其他程序-Python教程

资源魔 40 0

正在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

1.jpg

更多Python相干技巧文章,请拜访Python教程栏目进行学习!

以上就是python若何挪用其余顺序的具体内容,更多请存眷资源魔其它相干文章!

标签: python教程 python编程 python使用问题 python如何调用程序

抱歉,评论功能暂时关闭!