Using "with" context handler, and catching specific exception?

Ben Finney ben+python at benfinney.id.au
Mon Oct 21 23:04:14 EDT 2013


Victor Hooi <victorhooi at gmail.com> writes:

>     try:
>         with open('somefile.log', 'wb' as f:
>             f.write("hello there")
>     except IOError as e:
>         logger.error("Uhoh, the file wasn't there").

IOError, as Steven D'Aprano points out, is not equivalent to “file not
found”. Also, you're not doing anything with the exception object, so
there's no point binding it to the name ‘e’.

What you want is the specific FileNotFoundError:

    try:
        with open('somefile.log', 'wb' as f:
            f.write("hello there")
    except FileNotFoundError:
        logger.error("Uhoh, the file wasn't there").

See <URL:http://docs.python.org/3/library/exceptions.html#FileNotFoundError>.

-- 
 \            “Choose mnemonic identifiers. If you can't remember what |
  `\                mnemonic means, you've got a problem.” —Larry Wall |
_o__)                                                                  |
Ben Finney




More information about the Python-list mailing list