使用 subprocess.call() 调用子进程时,访问被调用进程生成的输出可能会很困难。本文解决了这个问题并提供了解决方案。
传统上,尝试使用 StringIO.StringIO 对象捕获输出(如下所示)会导致错误:
import StringIO ... stdout = StringIO.StringIO() ... subprocess.call(...)
出现此错误是因为 StringIO 对象缺少所需的 fileno() 方法subprocess.call().
为了规避此限制,Python 2.7 及后续版本引入了 subprocess.check_output 函数。该函数有效地捕获子进程的标准输出并将其作为字符串返回。
这是一个简单的示例,演示了 Linux 中 subprocess.check_output() 的用法:
import subprocess output = subprocess.check_output(["ping", "-c", "1", "8.8.8.8"]) print(output)
注意Linux ping 命令使用“-c”指定发送数据包的数量,而 Windows 使用“-n”指定发送数据包的数量
有关深入解释和其他用例,请参阅以下 Stack Overflow 答案:
[如何运行命令并得到输出Python?](https://stackoverflow.com/questions/1365265/how-to-run-a-command-and-get-the-output-in-python)
以上是如何在 Python 中检索子进程的输出?的详细内容。更多信息请关注PHP中文网其他相关文章!