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&grou > >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 :) > > > _______________________________________________ > > Tutor maillist - Tutor@python.org > > http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor