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

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

Mary-Kate Olsen
发布: 2024-12-09 00:33:11
原创
1036 人浏览过

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中文网其他相关文章!

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