#!/usr/bin/env python # # Example of exception handling # import sys def safe_open(fn, mode="r"): "Open file and return None if open fails" try: f = open(fn, mode) except: f = None return f def safe_int(s): "Convert string to integer, return None if bad string" try: n = int(s) except: n = None return n # Begin program rc = 0 line = None if len(sys.argv) != 2: sys.stderr.write("Usage: %s \n" % sys.argv[0]) rc = 1 else: user_fn = sys.argv[1] user_f = safe_open(user_fn) line = None if user_f == None: sys.stderr.write("Failed to open %s\n" % user_fn) rc = 2 else: try: line = user_f.readline() except: sys.stderr.write("Failed to read line from %s\n" % user_fn) rc = 3 if rc == 0: n = safe_int(line) if n == None: sys.stderr.write("Failed to convert to int line: %s\n" % line) rc = 4 else: sys.stdout.write("n=%d\n" % n) sys.exit(rc)