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 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!
Because the accepted answer does not solve the issue (at least for me):
To capture the
stderr
-output, the following should be done:The crucial part is the parameter
stderr=subprocess.PIPE
, without this parameter thestderr
-output will not be captured anderr
will beNone
.If you are interested only in the
stderr
-output you actually may use:In this case
p.communicate()[0]
isNone
.Try checking
stderr
withp.communicate()[1]
.communicate is a method. So you should call it!