首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

subprocess:Python中创建子进程

这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。 本篇,将详细介绍Python创建附加进行的库:subprocess。...对于run()函数启动的进程,它的标准输入输出通道会绑定到父进程的输入输出。这说明调用程序无法捕获命令的输出。不过,我们可以通过为stdout和stderr参数传入PIPE来捕获输出,以备以后处理。...而命令将错误消息返回了。这是因为我们设置了stdout与stderr为subprocess.PIPE,表明这些通道要开放。这样我们才能获取子shell运行的结果获取所运行的错误提示。...比如run(),call(),check_call()和check_output()函数都是Popen类的包装器。直接使用Popen可以更好的控制如何运行命令以及如何处理输入和输出流。...(msg)[0].decode('utf-8') print(repr(stdout_value)) 至于如果命令行错误需要捕获错误消息,可以直接将stderr也设置为PIPE。

54770
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python用subprocess的Popen来调用系统命令

    以下是一个非常easy的样例,来自Python的官网教程:http://docs.python.org/library/subprocess.html >>> import shlex, subprocess...參数stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们能够是PIPE,文件描写叙述符或文件对象,也能够设置为None,表示从父进程继承。...我们不能将close_fds设置为True同一时候重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。 假设參数shell设为true,程序将通过shell来运行。...subprocess.PIPE 在创建Popen对象时,subprocess.PIPE能够初始化stdin, stdout或stderr參数。表示与子进程通信的标准流。...相同,如 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。 Popen.send_signal(signal) 向子进程发送信号。

    1.9K20

    Python 执行系统命令

    系统命令 作为胶水语言,Python可以很方便的执行系统命令,Python3中常用的执行操作系统命令有以下方式 os.system() os.popen() subprocess 模块 os.system...该方法有以下参数 参数 作用 args 一般是一个字符串,是要执行的shell命令内容 bufsize 设置缓冲,负数表示系统默认缓冲,0表示无缓冲,正数表示自定义缓冲行数 stdin 程序的标准输入句柄...,NONE表示不进行重定向,继承父进程,PIPE表示创建管道 stdout 程序的标准输出句柄,参数意义同上 stderr 程序的标准错误句柄,参数意义同上,特殊,可以设置成STDOUT,表示与标准输出一致...同样,如果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。 4、Popen.send_signal(signal):向子进程发送信号。...9、Popen.stderr:如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回None。

    1.7K10

    python中的subprocess

    python2.7 源码中的注释(由于能力有限,翻译的不太准确): 这个模块允许您开启进程、连接输入、输出和错误的管道,并获取他们的返回代码。...程序通常执行序列或字符串的第一项,但可以通过使用明确的参数进行设置。 在UNIX上,shell = False(默认):在这种情况下,Popen类使用os.execvp()来执行程序的子进程。...默认值为bufsize是0(无缓冲的)。 stdin、stdout和stderr分别指定执行程序的标准输入,标准输出和标准错误。有效值是PIPE,现有的文件描述符(正整数),现有文件对象,None。...在python程序中都是看作为\n 注意: 这种功能仅仅支持用通用换行符构建的python(默认)。同时文件对象标准输出、标准输入、标准错误的换行符属性,不会被communicate()模块所更新。...这个属性是提供输入到子进程一个文件对象,否则为None stdout     如果stdout参数是PIPE , 这个属性是提供输出到子进程一个文件对象,否则为None stderr      如果stderr

    1.6K30

    python中执行shell命令的几个方

    但是无法读取程序执行的返回值) 适用于Python2 尝试第三种方案 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。...0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲 stdin, stdout, stderr 分别表示程序的标准输入、输出、错误句柄 preexec_fn 只在Unix平台下有效,...所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。...","t1"]) ret2 = subprocess.Popen("mkdir t2", shell=True) 终端输入的命令分为两种: 输入即可得到输出,如:ifconfig 输入进行某环境,依赖再输入...(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines

    3K10

    python的subprocess模块

    subprocess.getoutput()和subprocess.getstatusoutput()函数是来自Python 2.x的commands模块的两个遗留函数。...需要说明的是,该方法在python3.x中才有。 call()方法启动的进程,其标准输入输出会绑定到父进程的输入和输出。调用程序无法获取命令的输出结果。...直接使用Popen会对如何运行命令以及如何处理其输入输出有更多控制。如通过为stdin, stdout和stderr传递不同的参数。...bufsize:缓冲区大小,可不用关心 stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误 shell:与上面方法中用法相同 cwd:用于设置子进程的当前目录 env:用于指定子进程的环境变量...obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE

    3.1K20

    python笔记65 - Python3 subprocess执行命令行获取返回结果

    前言 subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。 Popen 是 subprocess的核心,子进程的创建和管理都靠它处理。...stdin, stdout, stderr: 分别表示程序的标准输入、输出、错误句柄 preexec_fn: 只在 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用...shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT...输入java,正常情况是可以输出中文的 import subprocess p = subprocess.Popen('java', shell=True...这段包含了中文") 使用subprocess.Popen执行,需设置encoding=’utf-8’ import subprocess p = subprocess.Popen(['python',

    9.3K20

    记录Python 调用 subprocess.Popen 卡死解决办法

    subprocess.Popen 是 Python 中用于执行外部命令或程序的模块之一。它提供了创建子进程并与之交互的灵活方式。...项目中需要在 Python 的代码中执行一些系统指令,例如调用项目中的某个可执行程序,所以就使用了 subprocess.Popen 方法。...executable="/bin/bash":指定要执行的 shell 程序,这里是 /bin/bash。 stderr=subprocess.STDOUT:将子进程的标准错误输出合并到标准输出中。...原因就是:PIPE本身可容纳的量比较小,所以程序会卡死,所以一大堆内容输出过来的时候,会导致PIPE不足够处理这些内容 实际我的业务需求并不关心程序执行过程中的输出,只要知道最后的执行结果即可,使用上面的...它返回一个 Popen 对象,通过该对象你可以控制子进程的输入、输出和状态。

    2K10

    并行处理(二)、subprocess模块

    需要说明的是,该方法在python3.x中才有。 subprocess.Popen(): 在一些复杂场景中,我们需要将一个进程的执行输出作为另一个进程的输入。...bufsize:缓冲区大小,可不用关心 stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误 shell:与上面方法中用法相同 cwd:用于设置子进程的当前目录 env:用于指定子进程的环境变量...subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr...(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) obj.stdin.write...,作为另一个子进程的输入: import subprocess child1 = subprocess.Popen(["cat","/etc/passwd"], stdout=subprocess.PIPE

    38710

    python subprocess模块

    0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲 stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄 preexec_fn:只在Unix平台下有效...所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。...CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等 终端输入的命令分为两种: 输入即可得到输出:如 ifocnfig 输入进行某环境,依赖某环境再输入...:如 python 需要交互的命令示例: import subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE..., stdout=subprocess.PIPE, stderr=subprocess.PIPE) obj.stdin.write('print 1 \n ') obj.stdin.write

    1K20

    Python调用系统命令的六种方法

    作为胶水语言,Python可以很方便的执行系统命令,Python3中常用的执行操作系统命令有os.system()、os.popen()、subprocess.popen()、subprocess.call...: 来自 192.168.1.101 的回复: 字节=32 时间=8ms TTL=127 来自 192.168.1.101 的回复: 字节=32 时间=2ms TTL=127 来自 192.168.1.101...好处在于:运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。 subprocess.Popen() 使用Popen可以创建进程,并与进程进行复杂的交互。...常用参数说明: 示例 from subprocess import PIPE, Popen # 返回的是 Popen 实例对象 proc = Popen( 'ipconfig', # cmd...特定的查询空间的命令 stdin=None, # 标准输入 键盘 stdout=PIPE, # -1 标准输出(演示器、终端) 保存到管道中以便进行操作 stderr=PIPE

    4.1K20
    领券