Hello, I would like to know what would be considered the most Pythonic way of handling errors when dealing with files, solutions that seem reasonable using 2.5:
------- try: f = open('afile', 'r') content = f.read() error = 200 except Exception: error = 404 finally: if locals().has_key('f'): f.close() ------ try: f = open('afile', 'r') content = f.read() except Exception: error = 404 else: error = 200 finally: if locals().has_key('f'): f.close() ------- try: f = open('afile', 'r') content = f.read() error = 200 except Exception: error = 404 finally: try: f.close() except Exception: pass ------- try: f = None f = open('afile', 'r') content = f.read() error = 200 except Exception: error = 404 finally: if f: f.close() ---- try: with open('afile', 'r') as f: content = f.read() error = 200 except Exception: error = 404 ---- Of the above I think I like the last one best, but I think I'd really like to have: with open('afile', 'r') as f with exceptions: content = f.read() error = 200 except Exception: error = 404 Another words from looking at PEP343 it is the author of the object returned by the with expression that gets to decide if exceptions are re-raised. But it would seem to me it should be the programmer using it that should decide. Of course as a newbie, I may be way off base. Thanks, Wink Saville -- http://mail.python.org/mailman/listinfo/python-list