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

Reply via email to