以编程方式执行 shell 命令并将其输出捕获为字符串的任务可以在 Python 的 subprocess 模块的帮助下完成。
对于最简单的在官方维护的 Python 版本中,使用 check_output 函数:
import subprocess output = subprocess.check_output(['ls', '-l']) print(output) # Output: b'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
在 Python 3.5 中,run 函数提供了更灵活和现代的方法:
import subprocess result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE) print(result.stdout.decode('utf-8')) # Output: 'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
用于扩展兼容性和高级功能,使用低级 Popen 构造函数。通过通信,您可以捕获输出并传递输入:
import subprocess p = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) output, _ = p.communicate() print(output) # Output: b'.\n..\nfoo\n'
Shell 命令执行(shell=True Argument)
默认,函数执行单个程序。要执行复杂的 shell 命令,请设置 shell=True。但是,这会引发安全问题。
输入处理
要通过 stdin 传递输入,请在 run 或 Popen 中指定输入关键字参数。
错误处理
为了正确处理错误,请将 check_output 与stdout=subprocess.STDOUT 或使用 stderr=subprocess.STDOUT 进行 Popen。或者,检查子进程返回码。
以上是如何在 Python 中运行 Shell 命令并捕获其输出?的详细内容。更多信息请关注PHP中文网其他相关文章!