在本篇文章里小编给大家分享的是关于python中subprocess实例用法及知识点详解内容,有需要的朋友们可以跟着学习下。
1.子流程模块用于生成子流程,可以连接到子流程的标准输入、输出和错误,也可以获取子流程的返回值。
2.subprocess提供了两种调用子例程的方法。
实例# coding:utf-8import os# popen返回文件对象,同open操作一样f = os.popen(r"ls", "r")l = f.read()print(l)f.close()
Python子流程知识点扩展
使用子进程模块的目的是替换一些旧的模块和方法,如os.system。
运行python时,我们都在创建和运行一个流程。像Linux进程一样,一个进程可以派生一个子进程,让这个子进程执行另一个程序。在Python中,我们通过标准库中的子流程包派生一个子流程,并运行一个外部程序。
子流程包中定义了几个函数来创建子流程。这些函数以不同的方式创建子流程,因此我们可以根据需要选择一个来使用。此外,子进程还提供了一些管理标准流和管道的工具,以便在进程之间使用文本通信。
导入模块
gt;gt;gt; import subprocess
命令执行调用()
执行参数提供的命令,并以数组作为参数运行命令。其功能类似于os.system(cmd)。
gt;gt;gt; subprocess.call(['ls','-l')
其中参数shell默认为False。
当shell设置为True时,可以直接传递一个字符串:
gt;gt;gt; subprocess.call('ls -l',shell=True)
获取结果check_output()
Call()不返回显示的结果,可以使用check_ouput()得到返回的结果:
gt;gt;gt; result = subprocess.check_output(['ls','-l'],shell=True)gt;gt;gt; result.decode('utf-8')
进程创建和管理Popen类
Subprocess.popen取代了os.popen。您可以创建一个popen类来创建进程和执行复杂的交互。
无需等待即可创建子进程。
import subprocesschild = subprocess.Popen(['ping','-c','4','www.baidu.com'])print('Finished')
添加等待的子进程
import subprocesschild = subprocess.Popen(['ping','-c','4','www.baidu.com'])child.wait() # 等待子进程结束print('Finished')
添加wait()后,主进程将等待子进程完成,然后执行下面的语句。
子流程文本流控制
标准输出重定向:
import subprocesschild = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE) #将标准输出定向输出到subprocess.PIPEprint(child.stdout.read())
使用stdin来处理它:
import subprocesschild1 = subprocess.Popen(['cat','/etc/passwd'],stdout=subprocess.PIPE)child2 = subprocess.Popen(['grep','root'],stdin=child1.stdout,stdout=subprocess.PIPE)print child2.communicate()
关于python中子流程实例的用法和知识点,本文就讲到这里。关于python中子过程用法的更多信息,请搜索源搜网之前的文章或者继续浏览下面的相关文章。希望大家以后能多支持
精彩评论