On Thursday 07 December 2006 10:25, Dave S wrote: > On Thursday 07 December 2006 00:31, Luke Paireepinart wrote: > > Dave S wrote: > > > Hi all, > > > > > > I thought I had my solution with subprocess ... my test code ... > > > > > > > > > > > > #!/usr/bin/env python > > > # -*- coding: iso8859_1 -*- > > > > > > import subprocess > > > > > > a = subprocess.Popen('tasklist.exe', bufsize=0, stdout=subprocess.PIPE, > > > universal_newlines=True) > > > op = a.stdout.readlines() > > > > > > for i in op: > > > if i.split(' ')[0] == 'gmanager.exe': > > > f = open('E:\Documents and Settings\All > > > Users\Desktop\gsr_running', 'w') > > > f.close() > > > > > > > > > > > > works a treat when I run it as proc.py detects the process I am looking > > > for & writes a dummy file to the desktop. :) but I get a black windows > > > terminal flash up. > > > > > > The code will eventually run in an app.pyw so to check it would be OK I > > > renamed my working proc.py to proc.pyw - it fails :(, No window (as > > > expected), no dummy file (not expected) - the process gmanager.exe is > > > running. > > > > > > So there seems to be a problem with subprocess & pyw > > > > > > Googling I found ... > > > https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1358527&gr > > >ou p_id=5470 So I tried the suggested workaround with proc.pyw ... > > > > > > > > > > > > #!/usr/bin/env python > > > # -*- coding: iso8859_1 -*- > > > > > > import subprocess > > > > > > a = subprocess.Popen('tasklist.exe', bufsize=0, stdin=subprocess.PIPE, > > > stdout=subprocess.PIPE, universal_newlines=True) > > > op = a.stdout.readlines() > > > a.stdin.close() > > > > > > for i in op: > > > if i.split(' ')[0] == 'gmanager.exe': > > > f = open('E:\Documents and Settings\All > > > Users\Desktop\gsr_running', 'w') > > > f.close() > > > > > > > > > Still zip, and because there is no terminal, I cannot view any errors ! > > > > > > Any suggestions welcome :) > > > > Well, because I'm batting 0 on this thread so far, I think I'll just go > > ahead and suggest another bad solution! > > You could try redirecting the output of sys.stderr to a file, and you > > might be able to see the error message! :D > > > > If you hadn't said 'any suggestions welcome' I might've kept this to > > myself :P > > Ahhh .. 'any suggestions' is an SOS call - all any any ideas are warmly > greeted :) > > > >>> import sys > > >>> class TestClass(object): > > > > def __init__(self): > > self.data = [] > > def write(self,item): > > self.data.append(item) > > > > >>> a = TestClass() > > >>> sys.stderr = a > > >>> salfjdsljfka321423 > > >>> print a.data > > > > ['\nTraceback (most recent call last):', '\n', ' File "<pyshell#14>", > > line 1, in -toplevel-\n', ' salfjdsljfka321423\n', "NameError: name > > 'salfjdsljfka321423' is not defined\n"] > > > > Except instead of a file-like class, you could just use a real file. > > But then it would only leave the last line intact. > > So you'd probably want to make a class that wraps a file object, where > > the write method just appends to an internal list, > > and it writes it all out to the file when you call the Class.close() or > > whatever. > > Actually, I guess the program stops executing on an exception... > > Hmm, not really sure what you'd do exactly. > > > > > > Sure, there are better solutions, and this doesn't really help you with > > your original problem, but it at least lets you see your error message! > > HTH, > > -Luke > > Thanks for that - I will give it a go & post back :) >
Oh my head .... OK after much tinkering I got the following to work with .pyw # scan windows task list to see if GSR is running f = os.popen('tasklist.exe', 'r') plist = f.readlines() f.close gsr_running = False # scan for GSR program for line in plist: if line.split(' ')[0] == 'gmanager.exe': gsr_running = True Ahhhh .... Dave can relax, chill, project finished ... all works ... goooood ...... (homer simpson moment !) > > > _______________________________________________ > > > Tutor maillist - Tutor@python.org > > > http://mail.python.org/mailman/listinfo/tutor > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor