On 2013-10-19, at 08:38 , Nick Coghlan wrote: >> The above example, especially if extended beyond two files, begs to used in >> a loop, like your 5 line version: >> >> >> for name in ("somefile.tmp", "someotherfile.tmp"): >> with suppress(FileNotFoundError): >> os.remove(name) >> >> which would be fine, of course. >> >> But to some with less education about the how and why, it is not clear why >> it couldn't be written like: >> >> with suppress(FileNotFoundError): >> >> for name in ("somefile.tmp", "someotherfile.tmp"): >> os.remove(name) >> >> yet to the cognoscenti, it is obvious there are seriously different >> semantics. > > However, that's a confusion about exception handling in general, not > about the suppress context manager in particular. The same potential > for conceptual confusion exists between: > > for name in ("somefile.tmp", "someotherfile.tmp"): > try: > os.remove(name) > except FileNotFoundError: > pass > > and: > > try: > for name in ("somefile.tmp", "someotherfile.tmp"): > os.remove(name) > except FileNotFoundError: > pass
It could work if the exceptions system was extended to a full-blow conditions system though. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com