Python

使用subprocess.run调用cmd命令

2018-03-29  本文已影响1100人  小毛同学

简介

使用方法

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False)

运行args描述的命令。等待命令完成,然后返回一个CompletedProcess实例。
完整的函数形式很大程度上与Popen构造函数相同 —— 除timeout、input和check之外,该函数的所有参数都传递给Popen接口。

In [123]: subprocess.run("echo 2", shell=True, stdout=subprocess.PIPE)
Out[123]: CompletedProcess(args='echo 2', returncode=0, stdout=b'2\r\n')

参数

args是所有调用所必需的,应该为一个字符串或一个程序参数序列。通常倾向提供参数序列,因为它允许这个模块来处理任何所需的转义和引用参数(例如,允许文件名中的空格)。如果传递单个字符串,shell必须为True(见下文),否则字符串必须简单地命名要执行的程序而不指定任何参数。

stdin、stdout和stderr分别指定执行程序的标准输入,标准输出和标准错误文件句柄。
如果指定stderr为subprocess.STDOUT,那标准输出和标准错误都会直接输出到标准输出,而CompletedProcess的stdout和stderr都会为None

如果shell是True,则将通过shell执行指定的命令。

示例

In [125]: cmd_re = subprocess.run("echo 2", shell=True, stdout=subprocess.PIPE)

In [126]: cmd_re.stdout
Out[126]: b'2\r\n'

In [139]: res = subprocess.run("dira", shell=True, stderr=subprocess.STDOUT)
'dira' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
In [140]: type(res.stderr)
Out[140]: NoneType

In [141]: res = subprocess.run("dira", shell=True)
'dira' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
In [142]: type(res.stderr)
Out[142]: NoneType

In [153]: res = subprocess.run("dira", shell=True, stderr=subprocess.PIPE)
In [154]: print(res.stderr.decode('gbk'))
'dira' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
上一篇 下一篇

猜你喜欢

热点阅读