Roger Davis wrote:
Hi all,
[snip]
Roger Davis
##### code follows
#!/usr/bin/python
import sys
import subprocess
def main():
psargs= ["/bin/ps", "-e"]
try:
ps= subprocess.Popen(psargs, stdout=subprocess.PIPE,
close_fds=True)
psout= ps.communicate()[0]
pslines= psout.splitlines()
for line in pslines:
print "%s" % line
except KeyboardInterrupt:
print "Keyboard interrupt received -- terminating."
sys.stdout.flush()
sys.exit(-1)
except:
print "%s: unexpected error in generation of system process
list" %
prognm
sys.stdout.flush()
sys.exit(-1)
main()
Completely off topic but I think the try clause could be rewritten that way:
try:
ps= subprocess.Popen(psargs, stdout=subprocess.PIPE, close_fds=True)
psout= ps.communicate()[0]
pslines= psout.splitlines()
for line in pslines:
print "%s" % line
except KeyboardInterrupt:
print "Keyboard interrupt received -- terminating."
finally:
sys.stdout.flush()
Don't use bare except clause, you're masking syntax errors for instance,
which will be flagged as 'unexpected error in generation ...".
In a more general manner, if something unexpected happens it's better to
just let the exception raise uncought. If you want to handle some
errors, meaning you're kindof expecting them then add a explicit clause
(like you did with KeyboardInterrupt).
JM
PS : "except Exception :" will catch most of the exceptions (all
inheriting from that class). It's better than using a bare "except :"
clause. (Exception won't catch SyntaxError)
--
http://mail.python.org/mailman/listinfo/python-list