os.scandir(path='.')
Return an iterator of DirEntry
objects corresponding to the entries in the directory given by path. The entries are yielded in arbitrary order, and the special entries '.'
and '..'
are not included.
Using scandir()
instead of listdir()
can significantly increase the performance of code that also needs file type or file attribute information, because DirEntry
objects expose this information if the operating system provides it when scanning a directory. All DirEntry
methods may perform a system call, but is_dir()
and is_file()
usually only require a system call for symbolic links; DirEntry.stat()
always requires a system call on Unix but only requires one for symbolic links on Windows.
On Unix, path can be of type str
or bytes
(use fsencode()
and fsdecode()
to encode and decode bytes
paths). On Windows, path must be of type str
. On both systems, the type of the name
and path
attributes of each DirEntry
will be of the same type as path.
The following example shows a simple use of scandir()
to display all the files (excluding directories) in the given path that don’t start with '.'
. The entry.is_file()
call will generally not make an additional system call:
for entry in os.scandir(path): if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
Note
On Unix-based systems, scandir()
uses the system’s opendir() and readdir() functions. On Windows, it uses the Win32 FindFirstFileW and FindNextFileW functions.
New in version 3.5.
Please login to continue.