怎么在Python中使用子流程解析不同的函数

  介绍

本篇文章给大家分享的是有关怎么在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中使用子流程解析不同的函数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

怎么在Python中使用子流程解析不同的函数