◐ Shell
clean mode source ↗

GH-119169: Speed up `os.walk(topdown=False)` by barneygale · Pull Request #119186 · python/cpython

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.

@barneygale barneygale changed the title GH-119169: Speed up os.walk() GH-119169: Speed up os.[f]walk()

May 30, 2024

@barneygale

barneygale added a commit to barneygale/cpython that referenced this pull request

Jul 6, 2024
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.

@barneygale barneygale changed the title GH-119169: Speed up os.[f]walk() GH-119169: Speed up os.walk()

Jul 6, 2024

barneygale added a commit to barneygale/cpython that referenced this pull request

Jul 6, 2024
Handle errors from `os.scandir()` and `ScandirIterator` similarly, which
lets us loop over directory entries with `for`.

@barneygale barneygale changed the title GH-119169: Speed up os.walk() GH-119169: Speed up os.walk(topdown=False)

Jul 6, 2024

barneygale added a commit to barneygale/cpython that referenced this pull request

Jul 8, 2024

@barneygale

encukou added a commit to barneygale/cpython that referenced this pull request

Sep 2, 2025

encukou pushed a commit that referenced this pull request

Sep 3, 2025
GH-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.