python语言只有一种运行方式_Python中四种运行其他程序的方式
在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控制运行的进程,可以使用win32process模块中的函数,如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数.
【方式一】使用os.system()函数运行其他程序
os模块中的system()函数可以方便地运行其他程序或者脚本,模式如下:
os.system(command)
command: 要执行的命令,如果要向脚本传递参数,可以使用空格分割程序及多个参数。
示例如下:
>>>importos
>>> os.system('notepad')# 打开记事本程序.
0
>>> os.system('notepad 1.txt')# 打开1.txt文件,如果不存在,则创建.
0
【方式二】使用ShellExecute函数运行其他程序
除了使用os.system()函数外,还可以使用win32api模块中的ShellExecute()函数来运行其他程序,格式如下:
ShellExecute(hwnd, op, file, args, dir, show)
hwnd: 父窗口的句柄,如果没有父窗口,则为0
op : 要运行的操作,为open,print或者为空
file: 要运行的程序,或者打开的脚本
args: 要向程序传递的参数,如果打开的是文件则为空
dir : 程序初始化的目录
show: 是否显示窗口
示例如下:
>>>importwin32api
>>> win32api.ShellExecute(0,'open','notepad.exe','','',0)# 后台执行
>>> win32api.ShellExecute(0,'open','notepad.exe','','',1)# 前台打开
>>> win32api.ShellExecute(0,'open','notepad.exe','1.txt','',1)# 打开文件
>>> win32api.ShellExecute(0,'open','http://www.sohu.com','','',1)# 打开网页
>>> win32api.ShellExecute(0,'open','D:\\Opera.mp3','','',1)# 播放视频
>>> win32api.ShellExecute(0,'open','D:\\hello.py','','',1)# 运行程序
使用ShellExecute函数,就相当于在资源管理器中双击文件图标,系统会打开相应程序运行。
NOTE:
【方式三】使用ShellExecute函数运行其他程序
创建进程:
为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数创建
一个运行相应程序的进程。其函数格式为:
CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)
appName 可执行文件名
cmdLine 命令行参数
procAttr 进程安全属性
threadAttr 线程安全属性
InheritHandle 继承标志
CreationFlags 创建标志
currentDir 进程的当前目录
Attr 创建程序的属性
示例如下:
>>> win32process.CreateProcess('C:\\Windows\\notepad.exe','',None,None,0, win32process.CREATE_NO_WINDOW,
None,None, win32process.STARTUPINFO())
(<892>, <644>,21592,18780)# 函数返回进程句柄、线程句柄、进程ID以及线程ID644>892>
结束进程:
可以使用win32process.TerminateProcess函数来结束已创建的进程, 函数格式如下:
TerminateProcess(handle, exitCode)
handle 要操作的进程句柄
exitCode 进程退出代码
或者使用win32event.WaitForSingleObject等待创建的线程结束,函数格式如下:
WaitForSingleObject(handle, milisecond)
handle : 要操作的进程句柄
milisecond: 等待的时间,如果为-1,则一直等待.
示例如下:
>>>importwin32process
>>> handle = win32process.CreateProcess('C:\\Windows\\notepad.exe','',None,None,0, win32process
.CREATE_NO_WINDOW, None,None, win32process.STARTUPINFO())# 打开记事本,获得其句柄
>>> win32process.TerminateProcess(handle[0],0)# 终止进程
或者
>>> importwin32event
>>> handle = win32process.CreateProcess('C:\\Windows\\notepad.exe','',None,None,0,
win32process.CREATE_NO_WINDOW, None,None, win32process.STARTUPINFO())# 创建进程获得句柄
>>> win32event.WaitForSingleObject(handle[0], -1)# 等待进程结束
0# 进程结束返回值
【方式四】使用ctypes调用kernel32.dll中的函数
使用ctypes模块可以让Python调用位于动态链接库的函数。
ctypes模块为Python提供了调用动态链接库中函数的功能。使用ctypes模块可以方便地调用由C语言编写的动态链接库,并向其传递参数。ctypes模块定义了C语言中的基本数据类型,并且可以实现C语言中的结构体和联合体。ctypes模块可以工作在Windows,Linux,Mac OS等多种操作系统,基本上实现了跨平台。
示例:
Windows下调用user32.dll中的MessageBoxA函数。
>>>fromctypesimport*
>>> user32 = windll.LoadLibrary('user32.dll')
>>> user32.MessageBoxA(0, str.encode('Ctypes is so smart!'), str.encode('Ctypes'),0)
1
ctype模块中含有的基本类型与C语言类似,下面是几个基本的数据类型的对照:
---------------------------------------
Ctypes数据类型 C数据类型
---------------------------------------
c_char char
c_short short
c_int int
c_long long
c_float float
c_doule double
c_void_p void *
---------------------------------------
python语言只有一种运行方式_Python中四种运行其他程序的方式相关推荐
- python锁_Python中四种锁的使用示例(代码)
本篇文章给大家带来的内容是关于Python中四种锁的使用示例(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Lock互斥锁 使用前num = 0 def a(): globa ...
- python语言单行注释以什么开头_python中单行注释以什么开头
学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程序某些部分的作用和功能(用自然语言描述代码的功能),在必要时,还可以将代码临时移除,是调试程序的好帮手. 当然,添加注释的最大作用还是提 ...
- python有几种容器_Python中几种内置的容器(Containers)类型:列表、字典、集合和元组的比较和该注意的点...
之所以称他们为容器类型是因为他们不像基本类型那样只有一种简单类型的数据,而是可以包含其他类型的数据,numpy的计算速度比原生Python快的一个很重要的原因就是numpy中的数组(类似于Python ...
- python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典
Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...
- anaconda怎么运行python程序_Python中四种运行其他程序的方式,你知道吗?
前言 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32p ...
- python中系列的含义_python中四种组合数据类型的含义、声明、增删改查,遍历
一.列表 列表:list 可以存储多个有顺序的可以重复的数据的类型 其他语言:数据:python中~提供的是列表[不说数组] 列表:操作数据:增加.删除.修改.查询 [CRUD] append/ins ...
- python语言的取余运算符_Python 中用于整数除法取余的运算符是()_学小易找答案...
[填空题]隐球菌病多由()传播. [单选题]下列选项中,哪一个符号是管道符号. ( ) [多选题]可采用分批法计算产品成本的企业有( ) [填空题]现有字符串 s="1234567" ...
- python属性和方法的区别_Python中几种属性访问的区别与用法详解
起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言, ...
- pythonmathcot函数_math库是python语言的数学模块吗_Python中的数学模块:Math和Cmath
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 当我们在日常生活中编写程序时,我们通常遇到需要使用数学来完成任务的情况.像其他编程语言一样,Python提 ...
最新文章
- 小型荧光驱动电路实验电路
- IC/FPGA校招笔试题分析(一)
- 生产者、消费者模式实现
- Atitit hsv转grb 应该优先使用hsv颜色原则 方便人类
- DataTable、DataView、ListBox 数据绑定与查询
- 一个帮助Java开发者快速学会Kotlin的开源项目
- 106. 动态中位数【经典 / 对顶堆】
- 删除Linux下/tmp目录引起的不正常登录系统
- 计算机移动设备有限公司,使计算机,移动设备更节能
- 为什么招聘高级前端开发这么难?
- mongodb和mysql创建表_MongoDB 数据库创建删除、表(集合)
- 使用commons-fileupload包实现文件上传
- 计算机熵的定义是,信息熵
- 拼多多|后端开发工程师|一面| 远程牛客面试 | 凉经 (2021/08/14)
- 20211104 为什么相似矩阵的迹相同
- 蜀门207服务端GM命令大全
- java sequencer_java sequencer播放列表
- 大连商务英语培训百家外语国际部怎样提高商务英语阅读技能?
- 没考计算机水平怎么填6,“计算机水平”怎么填,没曾考级,只参加过大 – 手机爱问...
- 完整PLC smart200伺服液压PID一套程序