Success with subprocess communicate on Windows?

Terry Reedy tjreedy at udel.edu
Wed Jul 2 05:05:51 EDT 2014


On 7/2/2014 12:33 AM, Tim Roberts wrote:
> Terry Reedy <tjreedy at udel.edu> wrote:
>>
>> It does not work on Windows. As I reported on
>> http://bugs.python.org/issue8631, msg222053,
>>>>> subprocess.check_output("pyflakes -h")
>> works in the interpreter and Idle shell, while
>>>>> s.check_output("pyflakes c:\programs\python34\lib\turtle.py")
>> gives bizarre output in the interpreter and hangs in the idle shell, as
>> does the code above.
>
> Right.  What do you think \t is in a string?  (Hint: it's only one byte.)

Yes, how could I forget that. But my use of a string literal here does 
not explain the problems when used string variables, as generated by os. 
I should try printing out the list of args passed to subprocess.

While remembering what \t is explains the command interpreter output 
(recursing through /lib), it does not explain the difference when 
invoked from Idle. There seems to be some bad interaction when calling 
subprocesses in the user subprocess.

> You need to use
>      s.check_output("pyflakes c:\\programs\\python34\\lib\\turtle.py")
> or
>      s.check_output(r"pyflakes c:\programs\python34\lib\turtle.py")

Now I get "Command 'pyflakes c:\programs\python34\lib\turtle.py' returns 
non-zero exit status 1" on both. On Idle, as least, a command-prompt 
window is flashed/displayed. It makes no sense to me that in the command 
interpreter,
'pyflakes c:\\programs\\python34\\lib' works and
'pyflakes c:\\programs\\python34\\lib\\turtle.py' returns status 1.
whereas both (with quotes elided and undoubled \) work at the command 
prompt.

-- 
Terry Jan Reedy




More information about the Python-list mailing list