许多命令行工具(例如 eSpeak)会显示详细输出及其预期操作。这可能会使 shell 变得混乱,导致难以读取之前的输出或与提示进行交互。
对于使用 subprocess 模块调用此类工具的 Python 脚本,静默其输出可以增强可读性和可用性。一种有效的方法是将标准输出(STDOUT)和标准错误(STDERR)重定向到空设备。
对于 Python 3.3 及更高版本,subprocess 模块提供DEVNULL 常量作为空设备。通过将 DEVNULL 传递给 subprocess.call() 的 stdout 和 stderr 参数,可以有效抑制子进程的输出。
import subprocess subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
在早期版本中Python 版本(包括 2.7)中,DEVNULL 常量不可用。相反,您可以手动打开一个空设备并重定向到它。
import os FNULL = open(os.devnull, 'w') subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
上述 Python 代码的命令行等效项是:
retcode = os.system("echo 'foo' >& /dev/null")
通过利用这些技术,您可以沉默 Python 脚本中的详细子进程输出,保持 shell 干净并提高进一步交互的可读性。
以上是如何在 Python 中抑制子进程的详细输出?的详细内容。更多信息请关注PHP中文网其他相关文章!