首页 > 后端开发 > Python教程 > 如何在 Python 中运行 Shell 命令并捕获其输出?

如何在 Python 中运行 Shell 命令并捕获其输出?

Linda Hamilton
发布: 2024-12-25 20:11:23
原创
466 人浏览过

How Can I Run Shell Commands and Capture Their Output in Python?

运行 Shell 命令并捕获输出

以编程方式执行 shell 命令并将其输出捕获为字符串的任务可以在 Python 的 subprocess 模块的帮助下完成。

check_output 函数(Python 2.7 及以上)

对于最简单的在官方维护的 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'
登录后复制

run 函数(Python 3.5 及更高版本)

在 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 构造函数(所有版本)

用于扩展兼容性和高级功能,使用低级 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板