Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to hide output of subprocess

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 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.

How can I do this?

like image 660
rypel Avatar asked Jun 29 '12 22:06

rypel


People also ask

How do you store output of subprocess run?

To capture the output of the subprocess. run method, use an additional argument named “capture_output=True”. You can individually access stdout and stderr values by using “output. stdout” and “output.

What is the output of subprocess Check_output?

The subprocess. check_output() is used to get the output of the calling program in python. It has 5 arguments; args, stdin, stderr, shell, universal_newlines. The args argument holds the commands that are to be passed as a string.

What is CWD in subprocess?

subprocess. Popen takes a cwd argument to set the Current Working Directory; you'll also want to escape your backslashes ( 'd:\\test\\local' ), or use r'd:\test\local' so that the backslashes aren't interpreted as escape sequences by Python. The way you have it written, the \t part will be translated to a tab .


1 Answers

For python >= 3.3, Redirect the output to DEVNULL:

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

For python <3.3, including 2.7 use:

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

It is effectively the same as running this shell command:

retcode = os.system("echo 'foo' &> /dev/null") 
like image 59
jdi Avatar answered Sep 17 '22 11:09

jdi