首页 >后端开发 >Python教程 >如何在 Python 中抑制子进程的详细输出?

如何在 Python 中抑制子进程的详细输出?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-09 00:33:111017浏览

How Can I Suppress Verbose Output from Subprocesses in Python?

抑制子进程的过多输出

许多命令行工具(例如 eSpeak)会显示详细输出及其预期操作。这可能会使 shell 变得混乱,导致难以读取之前的输出或与提示进行交互。

对于使用 subprocess 模块调用此类工具的 Python 脚本,静默其输出可以增强可读性和可用性。一种有效的方法是将标准输出(STDOUT)和标准错误(STDERR)重定向到空设备。

Python 3.3 的重定向输出

对于 Python 3.3 及更高版本,subprocess 模块提供DEVNULL 常量作为空设备。通过将 DEVNULL 传递给 subprocess.call() 的 stdout 和 stderr 参数,可以有效抑制子进程的输出。

import subprocess

subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)

重定向 Python 2 及更低版本的输出

在早期版本中Python 版本(包括 2.7)中,DEVNULL 常量不可用。相反,您可以手动打开一个空设备并重定向到它。

import os

FNULL = open(os.devnull, 'w')
subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)

等效的 Shell 脚本

上述 Python 代码的命令行等效项是:

retcode = os.system("echo 'foo' >& /dev/null")

通过利用这些技术,您可以沉默 Python 脚本中的详细子进程输出,保持 shell 干净并提高进一步交互的可读性。

以上是如何在 Python 中抑制子进程的详细输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn