On 07/03/2014 06:09 AM, Terry Reedy wrote:
Yes, but what puzzled me is that running
in the regular interpreter *does* produce output instead of the error
message. My guess is that it fills up the pipe, so that check_output
starts reading the pipe long before pyflakes exits with status 1.
Hmm. I tried it again, and I see some but not all of the output I got at
the command line *and* I see the exit status message. So the subprocess
must get some of the output but then stop when it sees the exit status.
For a partial explanation try this:
from the command line (again my path is slightly different):
pyflakes C:\Python34\lib > stdout.txt
this will still give you a few lines of output and these should be the
same ones you're seeing from the python interpreter when you're doing:
==> pyflakes sends these lines to stderr instead of stdout !!
subprocess.check_output(r'pyflakes C:\Python34\lib', stderr=subprocess.PIPE)
and the output is gone.
So the remaining questions are:
- why on earth is pyflakes sending these lines (and only these) to stderr ?
- what is happening to the stderr output when run in IDLE ? I guess it
is caught and suppressed somewhere, but to add to your observations the
check_output call doesn't hang on IDLE, but finishes eventually with no
output other than the traceback.