Python--模块

时间:2019-06-14
本文章向大家介绍Python--模块,主要包括Python--模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. subprocess

作用:允许创建一个新的进程让其执行另外的程序,并与它进行通信,获取标准的输入、标准输出、标准错误以及返回码等

subprocess模块中定义了一个Popen类,通过它可以来创建进程,并与其进行复杂的交互。查看一下它的构造函数:

  __init__(self, 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)
 

主要参数说明: 

args:args should be a string, or a sequence of program arguments.也就是说必须是一个字符串或者序列类型(如:字符串、list、元组),用于指定进程的可执行文件及其参数。如果是一个序列类型参数,则序列的第一个元素通常都必须是一个可执行文件的路径。当然也可以使用executeable参数来指定可执行文件的路径。

stdin,stdout,stderr:分别表示程序的标准输入、标准输出、标准错误。有效的值可以是PIPE,存在的文件描述符,存在的文件对象或None,如果为None需从父进程继承过来,stdout可以是PIPE,表示对子进程创建一个管道,stderr可以是STDOUT,表示标准错误数据应该从应用程序中捕获并作为标准输出流stdout的文件句柄。

shell:如果这个参数被设置为True,程序将通过shell来执行。 

env:它描述的是子进程的环境变量。如果为None,子进程的环境变量将从父进程继承而来。

 

创建Popen类的实例对象

1
res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

cmd:标准像子进程传入需要执行的shell命令,如:ls -al

subprocess.PIPE:在创建Popen对象时,subprocess.PIPE可以初始化为stdin, stdout或stderr的参数,表示与子进程通信的标准输入流,标准输出流以及标准错误。

subprocess.STDOUT:作为Popen对象的stderr的参数,表示将标准错误通过标准输出流输出。

 1 import subprocess
 2 
 3 cmd = input("请输入指令>>>")
 4 res = subprocess.Popen(
 5     cmd,  #  字符串指令:相当于 "ls -l","ifconfig"
 6     shell=True, # 使用shell,相当于使用终端
 7     stderr=subprocess.PIPE,  # 标准错误输出,错误指令输出的错误信息被它拿到
 8     stdout=subprocess.PIPE,  # 标准输出,正确指令的输出结果被它拿到。
 9 )
10 
11 print(res.stderr.read().decode("utf-8"))
12 print(res.stdout.read().decode("utf-8"))
subprocess.py

原文地址:https://www.cnblogs.com/mingtao-li/p/11020617.html