Jeff Fry Jeff Fry - 3 months ago 10
Python Question

Getting the output of a python subprocess

I'm trying to capture the output here. If, at the python prompt, I run

p = subprocess.Popen(["/path/to/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)


The return value (a list) prints to stdout, but isn't captured

[4460475, 4406612, 4379510]


I've tried following it up with

value = p.communicate()[0]
value


..but value is an empty string, not the list of ints I was expecting, and which is being printed to stdout

I experimented with the solutions from Python - store output of subprocess.Popen call in a string but haven't been able to capture the output.

UPDATE:

stderr doesn't seem to yield anything either...and the list I'm looking for is being printed out...just not having any luck in capturing it. See below:

>>> p = subprocess.Popen(["/home/jfry/tools/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)
>>>
[4460475, 4406612, 4379510]
value, err = p.communicate()
>>> value
''
>>> err


Thanks!

Answer

Try checking stderr with p.communicate()[1].