python-subprocess模块用法

Python的subprocess模块用于启动新进程并与其通信。它提供了Popen类和快捷函数,如call()和check_call()。Popen对象具有多种方法,如poll(), wait(), communicate()等,用于检查和管理子进程。安全性和异常处理是其关键特性,不会隐式调用/bin/sh,避免了shell注入的安全问题。使用subprocess可以替换旧的os.system(), os.spawn*等函数,提高程序的灵活性和安全性。" 113881653,9406723,使用Yocto在i.MX6ULL开发QT工程:从编译到测试,"['嵌入式开发', 'Linux', 'QT编程']
摘要由CSDN通过智能技术生成

subprocess是用于启动进程,并与进程通信的模块。

·格式

该模块定义了一个Popen类:

class 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):

参数释义:

-args  应该是字符串或程序参数序列,要执行的程序通常是args序列或字符串中的第一项,但可以使用
executable参数显式设置。

   在UNIX 上,当 shell=False(默认), 类Popen 用 os.execvp() 来执行子程序,args通常应该是
一个序列,如果args是一个字符串,它也会被视为只有一个元素的序列。

   在UNIX 上,当 shell=True,如果 args 是字符串,它将作为命令行字符串通过shell 执行;如果是
一个序列,它的第一项将作为命令行字符串,其他项将被视为附加的shell参数。

   在 Windows 上,类Popen 用 CreateProcess() 来执行子程序,它以字符串作为参数。 
   如果args是一个序列,它将使用 list2cmdline 方法转换为字符串。需要注意的是,并非所有MS 
Windows应用程序都以相同的方式解释命令行,list2cmdline 是为使用与MS C运行规则相同的应用程序而设
计的。


- bufsize 如果被赋值,值将作为内建函数 open() 的参数,0意味着无缓冲,1就是行缓冲,任何其他正值
意味着使用与该值大小接近的缓冲区。负bufsize意味着使用系统默认值,这通常意味着完全缓冲。 bufsize
的默认值为0(无缓冲)。


- stdin, stdout and stderr 分别代表子程序的标准输入,标准输出,标准错误输出的文件句柄。
   有效值为PIPE、现有文件描述符(正整数)、现有文件对象和None。若赋值为PIPE ,就会为子程序创
建新管道 ;若为None,不会发生重定向,子程序的文件句柄将从父程序继承。
   另外,stderr可以是STDOUT,这表明子程序的错误数据可以被获得并发送到stdout输出。


-  preexec_fn 如果preexec_fn设置为可调用对象,则在执行子进程之前,将在子进程中调用此对象。


- close_fds 若为true,则在执行子进程之前将关闭除0,1和2之外的所有文件描述符。


- shell 若为true,则将通过shell执行指定的命令。


- cwd 若不是None,在执行子进程之前,当前目录将更改为cwd。


- env 若不是None,它将为新进程指定环境变量。


- universal_newlines 文件对象stdout和stderr作为文本文件打开,但可以通过 '\n' (Unix), '\r' 
(Mac), '\r\n' (Win)断行。所有这些外部表示都被Python程序视为'\n'。注意:仅当Python使用通用换行
支持(默认)构建时,此功能才可用。
   注意这些特征只在python支持通用换行的时候有效(默认支持)。
   此外,communication() 方法不会更新文件对象stdout,stdin和stderr的换行属性。



- startupinfo, creationflags 如果给定,将传递给底层的 CreateProcess() 函数。它可以指定主窗口
的外观和新进程的优先级等内容。(仅限Windows)

    subprocess.startupinfo 详解网址:

    http://www.programcreek.com/python/example/5376/subprocess.STARTUPINFO

该模块还定义了两个快捷功能:

call(*args, **kwargs):

使用参数运行命令。等待命令完成,然后返回returncode属性。

参数与Popen构造函数相同。例:

retcode = call(["ls", "-l"])

 

··异常

在新程序开始执行之前,子进程中引发的异常将在父进程中重新引发。此外&#

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值