Howto Launch a windows application ?

Nicholas Bastin nick.bastin at gmail.com
Fri Oct 5 06:24:19 CEST 2007


On 10/3/07, stef mientki <stef.mientki at gmail.com> wrote:
> hello,
>
> I'm trying to launch a windows application,
> but as many others on this list, I've some trouble.
> I read some other threads about this topic,
> but sorry, I still don't understand all this (never heard of pipes).
>
> When I use a batch file, I can launch the bat-file from python,
> and the windows application launched from the batchfile is run perfectly.
>
> Now when I try to run the same windows application from Popen or call,
> nothing happens (or at least it's very fast and produces not the
> expected output).
>
> Please enlighten me, preferable in "windows-terminology"  ;-)
>
> thanks,
> Stef Mientki
>
> from subprocess import *
>
> cmd =[]
> cmd.append ( 'D:\\PIC-tools\\JALxxx\\jalv2_3.exe' )
> cmd.append ( '-long-start' )
> cmd.append ( '-d')
> cmd.append ( '-clear' )
> cmd.append ( '-sD:\\PIC-tools\\JAL\\libs2' )
> cmd.append ( 'd:\\pic-tools\\jal\\programs\\test_rs232\\test_rs232_hw.jal' )
> cmd.append ( '>d:\\data_actueel\\d7_test_browser\\temp.log' )
>
> # DOESN'T WORK
> result = call ( cmd )
>
> # Both Popen and call work
> cmd = [ 'd:\\data_actueel\\d7_test_browser\\JALcc.bat' ]
> #output = Popen ( cmd )
> result = call ( cmd )
> print result

First, call is a convenience function, but in your case, it's probably
not that convenient.  Use the actual Popen constructor so you can get
at the output directly.  Also, ditch the output redirector and use a
pipe:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.stdout, p.stderr
rcode = p.wait()
print out, err, rcode

Try that and see what happens.  When it doesn't work, look carefully
in out and err and see if anything interesting is in there.  I was
able to open notepad.exe in this way with no problems so my guess is
you're having some other problem, but avoiding the use of the
convenience function will give you stdout and stderr to look at.

--
Nick



More information about the Python-list mailing list