Jeff Fry Jeff Fry - 11 months ago 46
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],

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]

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


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],
[4460475, 4406612, 4379510]
value, err = p.communicate()
>>> value
>>> err


Answer Source

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