Reputation: 832
I'm curious when these two functions will return different values. Also if you could clarify the difference between a path/directory/file that would be appreciated.
Upvotes: 64
Views: 56991
Reputation: 57
os.path.exists returns if it is a valid path(check for directory or file, both) whereas os.path.isfile(checks for only file, not directory)
Upvotes: 0
Reputation: 35796
As you have already found out, the difference between exists
and isfile
is the fact that the former returns True
in case the given path is a directory or a file, while the latter only returns True
if the path points to a file.
Directories and files are quite similar from the technical point of view. A file can contain any kind of data. A directory is just a special entry in the file system (at least on Unix operating systems it is just a special file) that represents the fact that it may contain files and other directories. It is a helpful means for building up a data structure. Using directories, you can organize your data in a hierarchical structure.
Especially in the Windows world, directories are often called "folders". I am sure that you yourself are using "folders" for organizing your files.
A path is an unambiguous pointer to a resource in the file system. It can either point to a file or to a directory.
Upvotes: 46
Reputation: 10799
A directory tests true for exists, but false for isfile. There are a few different types of filesystem objects for which that is also true.
isfile means that it is a regular file. It is more specific than exists.
Upvotes: 4