Re: starting programs from python script on windows

2008-01-30 Thread Piet van Oostrum
 Benedict Verheyen [EMAIL PROTECTED] (BV) wrote:

BV Hi,
BV i want to automate starting programs on my windows machine and i want
BV to do it with windows.
BV This is a sample script:

BV from subprocess import Popen, PIPE
BV import time

BV print  Starting app 1
BV time.sleep(1)
BV try:
BV p1 = Popen([C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE],

Use raw strings or escape the \'s.
-- 
Piet van Oostrum [EMAIL PROTECTED]
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: [EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


starting programs from python script on windows

2008-01-28 Thread Benedict Verheyen
Hi,


i want to automate starting programs on my windows machine and i want
to do it with windows.
This is a sample script:

from subprocess import Popen, PIPE
import time

print  Starting app 1
time.sleep(1)
try:
 p1 = Popen([C:\Program Files\Microsoft 
Office\OFFICE11\OUTLOOK.EXE], stdout=PIPE)
except Exception, e:
 print Error on startup app 1 %s  % str(e)

print  Starting app 2
time.sleep(1)

try:
 p2 = Popen([C:\Windows\system32\cmd.exe], stdout=PIPE)
except Exception, e:
 print Error on startup app 2 %s  % str(e)

It start it from a batch file:
SET PYTHONPATH=C:\Python25

rem - path to script to execute
%PYTHONPATH%\python.exe C:\login.py

This is the result:

C:\C:\Python25\python.exe C:\login.py
  Starting app 1
  Starting app 2
Het proces heeft geprobeerd naar een niet-bestaande sluis te schrijven.
Het proces heeft geprobeerd naar een niet-bestaande sluis te schrijven.
Het proces heeft geprobeerd naar een niet-bestaande sluis te schrijven.

1. I get an error message saying the process has tried to write to a non 
existing pipe.

2. Order of execution isn't respected: it prints the 2 messages and then 
it tries to start the programs. Outlook is started but the command 
prompt not.

Anyway, if it works, i would like to start using python to drive the 
startup scripts of the users on the system.

How can i use python to start several programs as i would otherwise do 
manually and keep the order i want?

Thanks,
Benedict

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: starting programs from python script on windows

2008-01-28 Thread Tim Golden
Benedict Verheyen wrote:
 i want to automate starting programs on my windows machine and i want
 to do it with windows.
 This is a sample script:
 
 from subprocess import Popen, PIPE
 import time
 
 print  Starting app 1
 time.sleep(1)
 try:
  p1 = Popen([C:\Program Files\Microsoft 
 Office\OFFICE11\OUTLOOK.EXE], stdout=PIPE)
 except Exception, e:
  print Error on startup app 1 %s  % str(e)
 
 print  Starting app 2
 time.sleep(1)
 
 try:
  p2 = Popen([C:\Windows\system32\cmd.exe], stdout=PIPE)
 except Exception, e:
  print Error on startup app 2 %s  % str(e)
 
 It start it from a batch file:
 SET PYTHONPATH=C:\Python25
 
 rem - path to script to execute
 %PYTHONPATH%\python.exe C:\login.py
 
 This is the result:
 
 C:\C:\Python25\python.exe C:\login.py
   Starting app 1
   Starting app 2
 Het proces heeft geprobeerd naar een niet-bestaande sluis te schrijven.
 Het proces heeft geprobeerd naar een niet-bestaande sluis te schrijven.
 Het proces heeft geprobeerd naar een niet-bestaande sluis te schrijven.
 
 1. I get an error message saying the process has tried to write to a non 
 existing pipe.
 
 2. Order of execution isn't respected: it prints the 2 messages and then 
 it tries to start the programs. Outlook is started but the command 
 prompt not.
 
 Anyway, if it works, i would like to start using python to drive the 
 startup scripts of the users on the system.
 
 How can i use python to start several programs as i would otherwise do 
 manually and keep the order i want?

[Takes a big, deep breath]

OK. You've got a few misunderstandings in there. Nothing too major,
but it's worth sorting them out.

1) If you just want to kick off a program and that's it, say as part of
some kind of startup process, then you can just use the subprocess.call
convenience function. The business with stdout=PIPE is for communicating
with (usually console-based) programs which read and write to the
console.

2) The optional PYTHONPATH env var is used *internally* to Python as
one way of determining the path to search for Python modules *after
you've got Python running*. To run Python itself, you either need
to ensure the python.exe is already in the standard PATH env var,
or look for it in its conventional place: c:\python25\python.exe.
(Or make some other arrangement according to local convention etc.)

There was a thread here recently about using Python as part of a
login script -- which is what I think you're doing here. I think,
because of the uncertain interaction between the Workstation in
effect when you're logging in as opposed to the Workstation which
owns the user's desktop, you might do better to have some technique
for adding to the [Startup] entry on the Start Menu if all you want
to do is to start programs.

All that said, here's some sample code which just kicks off a
batch of programs. Note that I'm use os.startfile because that
will use ShellExecute which honours app path shortcuts, making
common things like MS Office apps much easier. You could
equivalently use subprocess.call but then you either have
to hardcode application paths or use FindExectable against an
arbitrary associated doc to find the right place.

code - untested
import os

programs = [
   outlook.exe,
   cmd.exe,
   winword.exe,
   c:/temp/helpfile.pdf
]
for program in programs:
   os.startfile (program)

/code

The last entry -- helpfile.pdf -- is to illustrate that os.startfile
can start documents as well as executable programs.

TJG
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: starting programs from python script on windows

2008-01-28 Thread Benedict Verheyen
Tim Golden schreef:
snip


 OK. You've got a few misunderstandings in there. Nothing too major,
 but it's worth sorting them out.
 
 1) If you just want to kick off a program and that's it, say as part of
 some kind of startup process, then you can just use the subprocess.call
 convenience function. The business with stdout=PIPE is for communicating
 with (usually console-based) programs which read and write to the
 console.
 
 2) The optional PYTHONPATH env var is used *internally* to Python as
 one way of determining the path to search for Python modules *after
 you've got Python running*. To run Python itself, you either need
 to ensure the python.exe is already in the standard PATH env var,
 or look for it in its conventional place: c:\python25\python.exe.
 (Or make some other arrangement according to local convention etc.)
 
 There was a thread here recently about using Python as part of a
 login script -- which is what I think you're doing here. I think,
 because of the uncertain interaction between the Workstation in
 effect when you're logging in as opposed to the Workstation which
 owns the user's desktop, you might do better to have some technique
 for adding to the [Startup] entry on the Start Menu if all you want
 to do is to start programs.
 
 All that said, here's some sample code which just kicks off a
 batch of programs. Note that I'm use os.startfile because that
 will use ShellExecute which honours app path shortcuts, making
 common things like MS Office apps much easier. You could
 equivalently use subprocess.call but then you either have
 to hardcode application paths or use FindExectable against an
 arbitrary associated doc to find the right place.
 
 code - untested
 import os
 
 programs = [
outlook.exe,
cmd.exe,
winword.exe,
c:/temp/helpfile.pdf
 ]
 for program in programs:
os.startfile (program)
 
 /code
 
 The last entry -- helpfile.pdf -- is to illustrate that os.startfile
 can start documents as well as executable programs.
 
 TJG

Tim,

that seems to work ok. I will do some more testing but it looks good,

Thanks!
Benedict

-- 
http://mail.python.org/mailman/listinfo/python-list