subprocess

# 允许你去创建一个新的子进程让其执行另外的程序,并与它进行通信,获取标准的输入,标准输出,标准错误以及返回码等
import subproecss

subprocess.run(['df', '-h'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)


stdin,stdout,stderr:分别表示程序的标准输入、标准输出、标准错误。有效的值可以是PIPE,存在的文件描述符,存在的文件对象或None,如果为None需从父进程继承过来,stdout可以是PIPE,表示对子进程创建一个管道,stderr可以是STDOUT,表示标准错误数据应该从应用程序中捕获并作为标准输出流stdout的文件句柄。

subprocess.check_output() #返回的是子程序的执行结果,返回unicode,需要用decode解码,执行错误报CalledProcessError异常错误。

subprocess.check_call() # 命令执行成功返回0,否则抛出subprocess.CalledProcessError异常

subprocess.call(args ,*, stdin=None , stdout=None, stderr=None, shell=False) # 命令执行成功返回0,否则返回非0

shell:表示使用linux shell,默认shell为False,正常情况下传递的命令是字符串列表,如果使用了shell=True,那么传递的命令为字符串,python会首先运行一个shell,再用这个shell来解释整个字符串

subprocess.Popen   # Popen对象创建后,子进程便会运行,Popen类提供了若干方法来控制子进程的运行
- wait # 等待子进程结束
- poll # 检查子进程状态
- kill # 给子进程发送SIGKILL信号终止子进程
- send_signal   # 向子进程发送信号
- terminate  # 给子进程发送SIGTERM信号终止子进程
- communicate  # 与子进程交互
# 示例
def execute_cmd(cmd):
  p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  stdout, stderr = p.communicate()
  if p.returncode != 0:
    return p.returncode, stderr
  return p.returncode, stdout

-------------------------------------------

个性签名:代码过万,键盘敲烂!!!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

原文地址:https://www.cnblogs.com/weiweivip666/p/14869719.html