![]() |
VOOZH | about |
os.DirEntry.is_file() method checks if a directory entry is a regular file. It is used with entries returned by os.scandir(). This method is faster than other file checks because it uses cached system information. It also accepts an optional follow_symlinks parameter that determines whether to follow symbolic links when checking. We use the following folder structure in the example below:
.
βββ example.py
βββ sample.txt
βββ some_dir/
βββ link_to_file -> example.py (symbolic link)
Example:
Output
example.py is a file
sample.txt is a file
Explanation: os.scandir('.') iterates over current directory entries. For each entry e, e.is_file(follow_symlinks=False) checks if itβs a file without following symlinks, then prints its name with a corresponding label.
DirEntry.is_file(follow_symlinks=True)
Parameters: follow_symlinks (bool, optional, default=True) determines whether to follow symbolic links when checking if the entry is a file.
Return Value: It returns True if the entry (or its symlink target, depending on follow_symlinks) is a file; otherwise, returns False.
Example 1: This example shows how to check if each entry itself is a file without following symbolic links.
Output
example.py: file (no symlink)
sample.txt: file (no symlink)
some_dir: not a file or symlink target
link_to_file: not a file or symlink target
Example 2: This example combines is_file() with stat() to get file size and is_dir() to identify directories.
Output
example.py is a file of size 2048 bytes
sample.txt is a file of size 1024 bytes
docs is a directory
Explanation: e.is_file() follows symlinks by default. For files, it gets the size via cached e.stat().st_size and prints the name with size. For directories, it prints the name.
Example 3: This example defines a recursive function to list all files in a directory and its subdirectories.
Output
./example.py
./sample.txt
./docs/readme.md
./docs/tutorial.pdf
Explanation: fun(p) recursively scans the directory p using os.scandir(p). For each entry e, if itβs a file, it prints the full path e.path. If itβs a directory, the function calls itself recursively to traverse deeper.