python subprocess使用,python2 subprocess

  python subprocess使用,python2 subprocess

  内容1。子流程介绍:2。子流程介绍。Popen类1,Popen类2的介绍,Popen类3的构造器,subprocess.Popen的例子。

  一、子流程介绍:

  子流程模块允许您启动一个新流程来运行子程序,连接输入/输出/错误状态管道,并获取子流程的返回结果。子流程使用的高级函数方法有很多,但都是基于子流程实现的。Popen类,所以本文重点介绍子进程的一些用法。Popen类。

  二。子流程。Popen类1。Popen类介绍。子进程模块底层的进程创建和管理由Popen类处理,主要用于在一个新的进程中执行一个子程序。

  2.详细讲解Popen类的构造函数。搬家:https://docs.python.org/zh-cn/3.9/library/subprocess.html

  def __init__(self,args,bufsize=-1,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,close_fds=True,shell=False,cwd=None,env=None,universal_newlines=None,startupinfo=None,creationflags=0,restore_signals=True,start_new_session=False,pass_fds=(),*,encoding=None,errors=None,text=None):参数说明:

  Args:要执行的shell命令可以是命令的字符串或参数序列。当这个参数的值是一个字符串时,这个命令的解释过程是依赖于平台的,所以通常建议将args参数作为一个序列传递。

  Bufsize:指定缓存策略,0表示不缓冲,1表示行缓冲,其他大于1的数字表示缓冲区大小,负数表示使用系统默认的缓冲区策略。

  Stdin、stdout、stderr:它们分别代表程序的标准输入、输出和错误句柄。

  Preexec_fn:用于指定在子进程运行前将被调用的可执行对象。它只在Unix平台上有效。

  Close_fds:如果该参数的值为True,则在子进程执行之前,除0、1和2之外的所有文件描述符都将被关闭。

  Shell:该参数用于标识是否使用shell作为要执行的程序。如果shell值为True,建议将args参数作为字符串而不是序列传递。

  Cwd:如果参数值不为None,函数将在执行此子流程之前更改当前工作目录。

  Env:用于指定子进程的环境变量。如果env=None,子进程的环境变量将从父进程继承。If env!=None,其值必须是映射对象。

  Universal_newlines:如果这个参数为True,那么这个file对象的stdin、stdout、stderr将作为文本流打开,否则将作为二进制流打开。

  Startupinfo和creationflags:这两个参数只在Windows下有效,它们会被传递给底层的CreateProcess()函数,用来设置子进程的一些属性,比如主窗口的外观、进程优先级等。

  3.子流程示例示例一 stdout 正确输出:。打开进程文件指针

  导入子进程#显示任务列表以执行命令,该命令用于列出所有任务sub=subprocess.popen (tasklist ,shell=true,stdout=subprocess.pipe) #将正确的内容输出到新管道print (show one,Stdout usage )print(sub . Stdout . read()。解码( gbk )#正确输出示例二、stderr错误输出

  #演示2,执行错误的命令,演示stderr输出sub2=subprocess.popen (sssss ,shell=true,# ssss是错误的命令行stderr=subprocess。管道,#将错误的内容输出到新管道stdout=subprocess。PIPE #输出正确)print(演示2,stderr的用法)print (sub2.stderr.read()。decode( gbk )#通过stderr结果:输出不正确的内容。

  “sssss”不是内部或外部命令,也不是可运行的程序或批处理文件。 示例三:sudin程序标准输入

  # 演示三,演示标准输入设备输入# tasklistfindstr chrome的意思是找出运行中的铬程序# 其运行逻辑是先通过任务列表找到所有任务列表,将找到的任务列表通过传递给findstr chrome .是通道传递的作用sub1=子流程Popen(tasklistfindstr chrome ,shell=True,stdout=subprocess .管道)#基于任务列表findstr chrome的运行逻辑,可以分为两部分sub2=子进程Popen(tasklist ,shell=True,stdout=。子进程。管道)#找到所有任务列表sub3=子流程Popen(findstr chrome ,shell=True,stdin=sub2.stdout,#将sub2的找到的所有任务列表当成sub3_1的输入内容标准输出=子进程。管道)打印(演示三,标准输入的用法)print(sub3.stdout.read().解码( gbk))结果:

  演示三,标准输入的用法chrome.exe 6360控制台1 202 664 Kchrome.exe 2924控制台16412 Kchrome.exe 2144控制台18128 Kchrome.exe 3816控制台1 382 300 Kchrome.exe 8612控制台1 39 156 Kchrome.exe 9484控制台1 14 552 Kchrome.exe 10336控制台1 86 288 Kchrome.exe 3740控制台185820 Kchrome.exe 12224控制台1 77 900K

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: