Handle errors from `os.scandir()` and `ScandirIterator` similarly, which lets us loop over directory entries with `for`. In top-down mode, call `os.path.join()` at most once per iteration.
Open
barneygale
changed the title
GH-119169: Speed up
GH-119169: Speed up os.walk()os.[f]walk()
Closed
barneygale added a commit to barneygale/cpython that referenced this pull request
Jul 6, 2024
barneygale
changed the title
GH-119169: Speed up
GH-119169: Speed up os.[f]walk()os.walk()
barneygale added a commit to barneygale/cpython that referenced this pull request
Jul 6, 2024
barneygale
changed the title
GH-119169: Speed up
GH-119169: Speed up os.walk()os.walk(topdown=False)
encukou pushed a commit that referenced this pull request
Sep 3, 2025GH-119186: Slightly speed up `os.walk(topdown=True)` When `os.walk()` traverses into subdirectories in top-down mode, call `os.path.join()` once to add a trailing slash, and use string concatenation thereafter to generate child paths.
lkollar pushed a commit to lkollar/cpython that referenced this pull request
Sep 9, 2025…121431) pythonGH-119186: Slightly speed up `os.walk(topdown=True)` When `os.walk()` traverses into subdirectories in top-down mode, call `os.path.join()` once to add a trailing slash, and use string concatenation thereafter to generate child paths.