运维开发网

python中子流程实例的用法和知识点详细介绍

运维开发网 https://www.qedev.com 2022-05-05 16:32 出处:网络
在本篇文章里小编给大家分享的是关于python中subprocess实例用法及知识点详解内容,有需要的朋友们可以跟着学习下。

在本篇文章里小编给大家分享的是关于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中子过程用法的更多信息,请搜索源搜网之前的文章或者继续浏览下面的相关文章。希望大家以后能多支持

0

精彩评论

暂无评论...
验证码 换一张
取 消