subprocess模块

从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system、os.spawn*、os.popen*、popen2.*、commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息。

常用subprocess方法示例:

#执行命令,返回执行状态,0或非0

>>> res = subprocess.call(["df","-h"]) Filesystem      Size  Used Avail Use% Mounted on /dev/sda1        48G   30G   18G  64% / tmpfs           1.9G     0  1.9G   0% /dev/shm /dev/sda3        91G   29G   58G  33% /data /dev/sdb        1.8T  696G  1.1T  40% /wdc >>> res 0 #接收字符串命令,返回元组形式,第一个元素是执行状态,第二个是执行结果

>>> subprocess.getstatusoutput('ls /home/zww/day5') (0, 'decorator2.py\ndecorator3.py\ndecorator4.py\ndecorator.py\nflag\nget_log\nuser_table') #接收字符串格式命令,并返回结果

>>> subprocess.getoutput('ls /home/zww/day5') 'decorator2.py\ndecorator3.py\ndecorator4.py\ndecorator.py\nflag\nget_log\nuser_table'

#执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res

>>> res = subprocess.check_output(['df','-h']) >>> res b'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda1        48G   30G   18G  64% /\ntmpfs           1.9G     0  1.9G   0% /dev/shm\n/dev/sda3        91G   29G   58G  33% /data\n/dev/sdb        1.8T  696G  1.1T  40% /wdc\n'

#上面那些方法,底层都是封装的subprocess.Popen poll() Check if child process has terminated. Returns returncode

wait() Wait for child process to terminate. Returns returncode attribute.

terminate() 杀掉所启动进程 communicate() 等待任务结束

stdin 标准输入 stdout 标准输出 stderr 标准错误

pid The process ID of the child process.

#例子 >>> p = subprocess.Popen("df -h",stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True) >>> p.stdout.read() b'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda1        48G   30G   18G  64% /\ntmpfs           1.9G     0  1.9G   0% /dev/shm\n/dev/sda3        91G   29G   58G  33% /data\n/dev/sdb        1.8T  696G  1.1T  40% /wdc\n' >>>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

JVM初探 -JVM内存模型

Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存...

12220
来自专栏跟着阿笨一起玩NET

从C#垃圾回收(GC)机制中挖掘性能优化方案

GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理。其对系统性能的影响是不可小觑的。今天就来说一下关于GC优化的东西...

29930
来自专栏互联网技术栈

最详细的JVM&GC讲解

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行ja...

21540
来自专栏大内老A

我所理解的Remoting (2) :远程对象的生命周期管理[下篇]

在上一篇文章中([原创]我所理解的Remoting(2):远程对象生命周期的管理—Part I ),我简要的讲述了CLR的垃圾回收机制和Remoting 基于L...

19070
来自专栏老马说编程

(64) 常见文件类型处理: 属性文件/CSV/EXCEL/HTML/压缩文件 / 计算机程序的思维逻辑

查看历史文章,请点击上方链接关注公众号。 对于处理文件,我们介绍了流的方式,57节介绍了字节流,58节介绍了字符流,同时,也介绍了比较底层的操作文件的方式,60...

44280
来自专栏逆向技术

PE格式第六讲,导出表

                PE格式第六讲,导出表 请注意,下方字数比较多,其实结构挺简单,但是你如果把博客内容弄明白了,对你受益匪浅,千万不要看到字...

20060
来自专栏冰霜之地

Weex 中别具匠心的 JS Framework

为了达到所有页面在用户端达到秒开,也就是网络(JS Bundle下载)和首屏渲染(展现在用户第一屏的渲染时间)时间和小于1s。

38830
来自专栏青玉伏案

JVM的内存区域划分以及垃圾回收机制详解

在我们写Java代码时,大部分情况下是不用关心你New的对象是否被释放掉,或者什么时候被释放掉。因为JVM中有垃圾自动回收机制。在之前的博客中我们聊过Objec...

24170
来自专栏生信宝典

Linux学习-文件排序和FASTA文件操作

环境变量的补充 PATH只是众多环境变量中的一个变量,用于存储可执行文件所在的目录,以便在用户输入命令时可以查询的到。尤其是自己写的脚本或安装的程序,系统不会知...

288100
来自专栏MasiMaro 的技术博文

ATL模板库中的OLEDB与ADO

上次将OLEDB的所有内容基本上都说完了,从之前的示例上来看OLEDB中有许多变量的定义,什么结果集对象、session对象、命令对象,还有各种缓冲等等,总体上...

15920

扫码关注云+社区

领取腾讯云代金券