(top, follow_symlinks)
Modified version of https://docs.python.org/3/library/os.html#os.scandir
    that returns https://docs.python.org/3/library/os.html#os.DirEntry for files
    directly to take advantage of possible cached os.stat calls.
Modified version of https://docs.python.org/3/library/os.html#os.scandir
    that returns https://docs.python.org/3/library/os.html#os.DirEntry for files
    directly to take advantage of possible cached os.stat calls.
Modified version of https : // docs . python . org / 3 / library / os . html#os . scandir that returns https : // docs . python . org / 3 / library / os . html#os . DirEntry for files directly to take advantage of possible cached os . stat calls .
def _walk(top, follow_symlinks):
    """Modified version of https://docs.python.org/3/library/os.html#os.scandir
    that returns https://docs.python.org/3/library/os.html#os.DirEntry for files
    directly to take advantage of possible cached os.stat calls.
    """
    dirs = []
    nondirs = []

    try:
        scandir_iter = scandir(top)
    except OSError:
        return

    # Avoid repeated global lookups.
    get_next = next

    while True:
        try:
            entry = get_next(scandir_iter)
        except StopIteration:
            break
        except OSError:
            return

        try:
            is_dir = entry.is_dir(follow_symlinks=follow_symlinks)
        except OSError:
            is_dir = False

        if is_dir:
            dirs.append(entry)
        else:
            nondirs.append(entry)

    yield top, dirs, nondirs

    for dir_entry in dirs:
        for entry in walk(dir_entry.path, follow_symlinks=follow_symlinks):
            yield entry
def _walk ( top , follow_symlinks ) : dirs = [ ] nondirs = [ ] try : scandir_iter = scandir ( top ) except OSError : return # Avoid repeated global lookups. get_next = next while True : try : entry = get_next ( scandir_iter ) except StopIteration : break except OSError : return try : is_dir = entry . is_dir ( follow_symlinks = follow_symlinks ) except OSError : is_dir = False if is_dir : dirs . append ( entry ) else : nondirs . append ( entry ) yield top , dirs , nondirs for dir_entry in dirs : for entry in walk ( dir_entry . path , follow_symlinks = follow_symlinks ) : yield entry