diff options
| -rw-r--r-- | Doc/library/os.rst | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 7609580..dfc910b 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1346,7 +1346,26 @@ Files and Directories        Using :func:`access` to check if a user is authorized to e.g. open a file        before actually doing so using :func:`open` creates a security hole,        because the user might exploit the short time interval between checking -      and opening the file to manipulate it. +      and opening the file to manipulate it. It's preferable to use :term:`EAFP` +      techniques. For example:: + +         if os.access("myfile", os.R_OK): +             with open("myfile") as fp: +                 return fp.read() +         return "some default data" + +      is better written as:: + +         try: +             fp = open("myfile") +         except OSError as e: +             if e.errno == errno.EACCESS: +                 return "some default data" +             # Not a permission error. +             raise +         else: +             with fp: +                 return fp.read()     .. note:: | 
