本篇文章给大家分享的是有关怎么在Python中使用子流程解析不同的函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> subprocess.call() 强>
执行由参数提供的命令。
我们可以用数组作为参数运行命令,也可以用字符串作为参数运行命令(通过设置参数shell=True)
注意,参数壳默认为假
我们用subprocess.call()来做一个统计磁盘的例子:
subprocess.call ((& # 39; df # 39;,, & # 39; - h # 39;])
下面的例子把外壳设置为真正的
subprocess.call (& # 39; du  -hs 美元回家# 39;,,shell=True)
注意,Python官方文档里对参数shell=True陈述了一个警告:
Invoking 从而system shell with shell=True 还要be a security hazard if 总和 with untrusted 输入
现在,我们来看看输入与输出
<强>输入和输出强>
子流程模块能阻止输出,当你不关心标准输出的时候是非常方便的。
它也使你通过一种正确的方式管理输入/输出,有条理地整合python脚本中的的壳命令。
<强>返回代码强>
通过subprocess.call的返回值你能够判定命令是否执行成功。
每一个进程退出时都会返回一个状态码,你可以根据这个状态码写一些代码。
<强> stdin、stdout和stderr 强>
在使用子流程时,有一个微妙的部分是怎么使用管道把命令连接起来。
管道表明一个新的子管道应该被创建。
默认的设置为None,意味着没有重定向发生
标准错误可以指向标准输出,表明子进程的错误信息会被捕获到和标准输出同一个文件。
<强> subprocess.Popen ()
强>
子流程模块中基本的进程创建和管理由Popen类来处理。
subprocess.Popen是用来替代os.popen的。
我们来做一些真实的例子,子流程。Popen需要一个数组作为参数:
import 子流程 时间=p subprocess.Popen ([“echo",,“hello world"],, stdout=subprocess.PIPE) print p.communicate () 在祝辞祝辞(& # 39;hello 世界 & # 39;,None)
注意,虽然你可以使用“shell=True",但并不推荐这样的方式。
如果你知道你只用几个有限的函数,比如Popen和烟斗,你可以单单指定这几个函数:
得到subprocess import Popen,管 p1 =, Popen ((“dmesg"), stdout=管) print p1.communicate ()
<强> Popen.communicate() 强>
()沟通函数返回一个元组(标准输出和错误)。
Popen.communicate()和进程沟通:发送数据到标准输入。从标准输出和错误读取数据直到遇到结束符。等待进程结束。
输入参数应该是一个字符串,以传递给子进程,如果没有数据的话应该是没有。
基本上,当你用()沟通函数的时候意味着你要执行命令了。
<强>用子流程写平程序强>
我们先问用户地址,然后用萍请求这个地址。
#, Import 从而模块 import 子流程 #,Ask 从而,user for 输入 时间=host raw_input (“Enter  a host 用平:,“),, #,Set up 从而echo command 以及direct 从而output 用a 管道 时间=p1 subprocess.Popen([& # 39;平# 39;,,& # 39;-c 2 & # 39;,,主机),,stdout=subprocess.PIPE) #,Run 从而命令 时间=output p1.communicate () [0] print 输出
以上就是怎么在Python中使用子流程解析不同的函数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。