Python代码中调用应用程序

杨选
2023-12-01

Python脚本执行过程中,如需要运行另一个程序,或执行相关命令时,一般有几种方法:

1. os.system(command)

在子终端中执行系统命令command, 在命令执行完后退出并返回执行状态。无法捕捉命令执行过程返回的具体信息

2. os.popen(command, type)

打开一个与command进程之间的管道,并返回命令执行后的信息对象,并通过type指定管道流的方向,来读或写命令的执行结果

说明:os.system 与 os.popen 均能执行系统命令,二者之间的区别在于返回信息

system只能返回执行后的状态信息,popen则可以通过对象访问获取执行结果,例如:

>>> import os
>>> p = os.system('ls')
>>> p
0
>>> p = os.popen('ls').readlines()
>>> p
Out[10]:
['test.c\n',
 'conf.ini\n',
....

3. subprocess.popen

subprocess模块可以创建新的进程,通过与新建进程的相关管道(输入、输出等)连通,可获取命令执行的返回 状态,

其意在取代现有的os.system os.popen等函数, 主要提供一个类Popen

class subprocess.Popen( args, 
      bufsize=0, 
      executable=None,
      stdin=None,
      stdout=None, 
      stderr=None, 
      preexec_fn=None, 
      close_fds=False, 
      shell=False, 
      cwd=None, 
      env=None, 
      universal_newlines=False, 
      startupinfo=None, 
      creationflags=0)

Popen类中有Popen.stdin, Popen.stdout, Popen.stderr三个相关属性分别表示子程序的标准输入、输出、错误,可通过属性实现与子进程通信

eg: subprocess.Popen(command, shell=True, stdin=subprocess.PIPE)

4. win32api模块

Python本身是没有自带访问windows系统API库的,需自己下载名为pywin32的库文件并安装后,

1. ShellExecute

导入win32api模块后,运用ShellExecute()函数来运行其他程序

eg:import win32api
    ShellExecute(hwnd, ip, file, params, dir, bShow)

2. CreateProcess

为了便于控制通过脚本运行的程序,可通过使用CreateProcess()函数运行

CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles ,dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
 类似资料: