修改自:

原文 : Working with Python subprocess - Shells, Processes, Streams, Pipes, Redirects and More

一 程序的stdin,stdout,stderr+redirect+pipe

程序的stdin,stdout,stderr:

通常地一个应用程序默认地连接有3个io流,分别为stdin标准输入流,stdout标准输出流,stderr标准错误输出流。在程序中我们可以使用它们的句柄0,1,2来使用它们。

程序与流的工作过程如下:

从终端的输入通过标准输入流传给程序,程序的输出传给标准输出流,程序的错误传给标准错误输出流。

程序的流的重定向(redirect):

例如将程序的输入重定向到一个文件file1,将输出和错误输出重定向到文件file2,语句如下:program < file1 > file2 2>&1, 图示如下:

管道pipe:

用来将一个程序的标准输出作为另一个程序的输入,例如:program1 | program2 , 图示如下:

二 python中subprocess

subprocess的popen函数:

subprocess包含了所有的跟进程有关的操作,subprocess.Popen用来创建新的进程。

subprocess.Popen(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

)

shell参数:

当shell=True时,表示在系统默认的shell环境中执行新的进程,此shell在windows表示为cmd.exe,在linux为/bin/sh。

executable参数:

当指定shell=True时,executable用来修改默认的shell环境,比如executable='/bin/bash'。

stdin,stdout,stderr参数:

默认地stdin,stdout,stderr均为None,此时表示此新进程的stdin,stdout,stderr均为默认,从keyboard获得输入,将输出和错误输出到display。如果stdin设置为PIPE,此时的stdin其实是个file对象,用来提供输入到新创建的子进程;如果stdout设置为PIPE,此时stdout其实是个file对象,用来保存新创建的子进程的输出;如果stderr设置为PIPE,此时的stderr其实是个file对象,用来保存新创建的子进程的错误输出。

universal_newlines参数:

如果此参数设置为True,则新进程的stdout和stderr将输出为text,换行为'\n'或'\r'或'\n\r'按照不同的系统平台。

实例:

importsubprocessdefrunCommandWithOutput(cmd,stdinstr=''):

p=subprocess.Popen(cmd, shell=True, universal_newlines=True, stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)#p.stdin.write(stdinstr)stdoutdata, stderrdata=p.communicate(stdinstr)#p.stdin.close()returnp.returncode, stdoutdata, stderrdata

完!

python subprocess pipe_python类库31[进程subprocess与管道pipe]相关推荐

  1. python ffmpeg pipe_Python子进程中的ffmpeg无法为“pipe:”找到合适的输出格式

    尝试通过Python将subs用ffmpeg刻录成视频.在命令行中工作正常,但从Python子进程调用时:p = subprocess.Popen('cd ~/Downloads/yt/; ffmpe ...

  2. python ffmpeg pipe_Python子进程中的ffmpeg – 无法为’pipe:’找到合适的输出格式

    尝试通过 Python使用ffmpeg将sub刻录成视频.在命令行中工作正常,但是从Python子进程调用时: p = subprocess.Popen('cd ~/Downloads/yt/; ff ...

  3. 2022.8.31 进程中无名管道的特点,无名管道的创建,为何无名管道只能能够实现具有亲缘关系的进程间的通信,以及实现利用无名管道父进程给子进程发送消息的完整代码。

    无名管道通信 无名管道特点: (1):只能用于具有亲缘关系的进程之间的通信.(父子进程或兄弟进程) (2):是一个半双工的通信模式,具有固定的读端和写端.(fd[0]固定为读端,fd[1]固定为写端) ...

  4. python subprocess pipe_Python的subprocess模块总结

    subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.* subprocess最简单的用法就是调用 ...

  5. python subprocess pipe_python subprocess pipe 实时输出日志的操作

    * test11.py import time print "1" time.sleep(2) print "1" time.sleep(2) print &q ...

  6. python echo(msg) 字符串_python的subprocess模块

    1 os与commands模块 2 subprocess模块 3 subprocess.Popen类 我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell. ...

  7. python获取maco句柄_python之subprocess模块

    #!/usr/bin/env python#-*- coding: utf-8 -*- '''subprocess:提供执行系统相关命令的功能''' importsubprocess#call 执行命 ...

  8. Python之路(第二十篇) subprocess模块

    一.subprocess模块 subprocess英文意思:子进程 那什么是进程呢? (一)关于进程的相关理论基础知识 进程是对正在运行程序的一个抽象,进程的概念起源于操作系统,是操作系统最核心的概念 ...

  9. 【Python】 子进程创建与使用subprocess

    subprocess *****本文参考了Vamei大神的http://www.cnblogs.com/vamei/archive/2012/09/23/2698014.html 运用subproce ...

最新文章

  1. 关于VS2005不能更改字体的问题
  2. IOS(objective-c)实现md5加密(32位小写)的工具类
  3. 重要说明,粉丝必看【java人脸识别说明】
  4. 互联网晚报 | 1月26日 星期三 | 春晚正式入驻视频号;小红书合并社区与电商业务;中国电信5G消息正式商用...
  5. 重装系统后电脑没有计算机也没有网络连接,电脑网络重置以后没有了wifi连接...
  6. 在QT中使用同步阻塞式HTTP请求的方法
  7. 内存释放_把微信这两个开关关掉, 手机立马释放大量内存, 快去试试吧
  8. 计算机基础(八):linux编程规范总结
  9. 卧槽!jmeter 竟然这么牛逼,压测爽歪歪~
  10. ExtJs gridPanel Column 时间格式化
  11. 从(社区电商)订购 到 出库 业务流程(个人想法)
  12. ie6下,给a添加事件,如果事件中有http请求,将会无效
  13. cavium公司和xPliant芯片
  14. YunOS曙光初现----看好阿里云OS----阿冬专栏!!
  15. oracle创建哈希索引,ORACLE10g新特性——全局HASH分区索引
  16. android退出中国,曾经的安卓机皇宣布关闭中国社区,彻底放弃手机业务了?
  17. 计算机模拟自由落体,CSS3 方块自由落体运动模拟
  18. html入门、结构、标签、列表、表格
  19. Allegro铜皮倒角技巧-shape倒角
  20. 深度学习高手该怎样炼成?这位拿下阿里天池大赛冠军的中科院博士为你规划了一份专业成长路径

热门文章

  1. 底层I/O性能大PK:Python/Java被碾压,Rust有望取代C++
  2. Google回应全球宕机:磁盘满了;摩拜App昨晚正式停止服务;Docker Desktop 3.0.0发布|极客头条...
  3. 开发者实测 M1 芯片报告:除了大型应用程序启动慢点,整体性能优秀!
  4. 一名亚马逊软件工程师的辛酸苦楚
  5. 五大法则助你成为更出色的开发者|原力计划
  6. 比特币 Logo 背后有哪些历史及象征意义?Logo 上的“B”为什么会向右倾斜?
  7. Python 进阶之递归函数一点都不难!
  8. 程序员相亲竟然因为这个被拒绝了......
  9. 国内 UOS 统一操作系统曝光;联想宣布要 All in 5G​;Android Studio 新版发布 | 极客头条...
  10. 王欣的“灵鸽”到底行不行?