Why exception from os.path.exists()?
Marko Rauhamaa
marko at pacujo.net
Wed Jun 13 16:56:09 EDT 2018
"Peter J. Holzer" <hjp-python at hjp.at>:
> POSIX specifies a number of error codes which can be returned by stat():
>
> [EACCES]
> Search permission is denied for a component of the path prefix.
> [EIO]
> An error occurred while reading from the file system.
> [ELOOP]
> A loop exists in symbolic links encountered during resolution of the
> path argument.
> [ENAMETOOLONG]
> The length of a component of a pathname is longer than {NAME_MAX}.
> [ENOENT]
> A component of path does not name an existing file or path is an
> empty string.
> [ENOTDIR]
> A component of the path prefix names an existing file that is
> neither a directory nor a symbolic link to a directory, or the path
> argument contains at least one non- <slash> character and ends with
> one or more trailing <slash> characters and the last pathname
> component names an existing file that is neither a directory nor a
> symbolic link to a directory.
> [EOVERFLOW]
> The file size in bytes or the number of blocks allocated to the file
> or the file serial number cannot be represented correctly in the
> structure pointed to by buf.
>
> [...]
>
> Note that none of these covers "file name contains an illegal character"
> for the simple reason that on POSIX systems there are no illegal
> characters.
>
> So none of these is a good choice for the errno parameter of an OSError
> to be thrown.
The natural errno value would be EINVAL, which is returned whenever a
system call is invoked with an illegal argument.
Marko
More information about the Python-list
mailing list