36.16. commands — 用于运行命令的实用程序 — Python 文档
来自菜鸟教程
Python/docs/2.7/library/commands
36.16. 命令 — 用于运行命令的实用程序
自 2.6 版起已弃用:commands 模块已在 Python 3 中删除。 改用 subprocess 模块。
commands 模块包含 os.popen() 的包装函数,它将系统命令作为字符串并返回该命令生成的任何输出以及可选的退出状态。
subprocess 模块为生成新进程和检索其结果提供了更强大的工具。 使用 subprocess 模块比使用 commands 模块更可取。
笔记
在 Python 3.x 中,getstatus() 和两个未记录的函数(mk2arg()
和 mkarg()
)已被删除。 此外,getstatusoutput() 和 getoutput() 已移至 subprocess 模块。
commands 模块定义了以下函数:
- commands.getstatusoutput(cmd)
- 在带有 os.popen() 的 shell 中执行字符串 cmd 并返回一个 2 元组
(status, output)
。 cmd 实际上是作为{ cmd ; } 2>&1
运行的,因此返回的输出将包含输出或错误消息。 从输出中删除尾随换行符。 命令的退出状态可以根据 C 函数wait()
的规则进行解释。
- commands.getoutput(cmd)
- 与 getstatusoutput() 类似,除了退出状态被忽略并且返回值是包含命令输出的字符串。
- commands.getstatus(file)
将
ls -ld file
的输出作为字符串返回。 此函数使用 getoutput() 函数,并正确转义参数中的反斜杠和美元符号。自 2.6 版起已弃用:此功能不明显且无用。 在存在 getstatusoutput() 的情况下,该名称也具有误导性。
例子:
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'