[Tutor] commands.getoutput equivalent in subprocess

Peter Otten __peter__ at web.de
Sun Mar 18 13:23:38 CET 2012


Pete O'Connell wrote:

> Hello I print a lot of values at work using grep and need to be
> constantly opening a shell window to do this (rather than staying
> within my main program which is Nuke by the Foundry). Is there a
> simple equilavent to commands.getoutput that is more up to date (I
> would assume within the subprocess module)? It sounds like the
> commands module will be phased out soonish. I am using Python 2.6
> 
> Here is the kind of thing I would like to do in subprocess
> 
> import commands
> output = commands.getoutput("echo Hello World!")
> print output

Here's the equivalent for Python 3:

>>> import subprocess
>>> output = subprocess.getoutput("echo Hello World!")
>>> print(output)
Hello World!
>>> 

;)

For invoking external programs you should still consider something more 
involved like

>>> p = subprocess.Popen(["grep", "^def\s", 
"/usr/lib/python3.2/subprocess.py"], stdout=subprocess.PIPE)
>>> print(p.communicate()[0].decode("utf-8"))
def _cleanup():
def _eintr_retry_call(func, *args):
def call(*popenargs, **kwargs):
def check_call(*popenargs, **kwargs):
def check_output(*popenargs, **kwargs):
def list2cmdline(seq):
def getstatusoutput(cmd):
def getoutput(cmd):
def _demo_posix():
def _demo_windows():




More information about the Tutor mailing list