How to hide output of subprocess(如何隐藏子进程的输出)
问题描述
我在 Ubuntu 上使用 eSpeak,并且有一个 Python 2.7 脚本,可以打印并说出一条消息:
I'm using eSpeak on Ubuntu and have a Python 2.7 script that prints and speaks a message:
import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])
eSpeak 会产生所需的声音,但会因为一些错误(ALSA lib...,没有套接字连接)而使外壳混乱,因此我无法轻松阅读之前打印的内容.退出代码为 0.
eSpeak produces the desired sounds, but clutters the shell with some errors (ALSA lib..., no socket connect) so i cannot easily read what was printed earlier. Exit code is 0.
不幸的是,没有记录的选项可以关闭它的冗长,所以我正在寻找一种方法来仅在视觉上使其静音并保持打开的外壳清洁以进行进一步的交互.
Unfortunately there is no documented option to turn off its verbosity, so I'm looking for a way to only visually silence it and keep the open shell clean for further interaction.
我该怎么做?
推荐答案
对于python >= 3.3,将输出重定向到DEVNULL:
For python >= 3.3, Redirect the output to DEVNULL:
import os
import subprocess
retcode = subprocess.call(['echo', 'foo'],
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
对于python <3.3,包括2.7使用:
For python <3.3, including 2.7 use:
FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'],
stdout=FNULL,
stderr=subprocess.STDOUT)
实际上和运行这个 shell 命令是一样的:
It is effectively the same as running this shell command:
retcode = os.system("echo 'foo' &> /dev/null")
这篇关于如何隐藏子进程的输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何隐藏子进程的输出
基础教程推荐
- 在 Python 中将货币解析为数字 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
