1. Use Path.walk in pathlib code

If you are already using pathlib, prefer Path.walk() over dropping back to os.walk(). This is available in Python 3.12 and later.

Staying inside pathlib avoids mixing path styles in the same block of code and makes later refactors cleaner. The main win is consistency: once the root is a Path, the traversal can remain Path-oriented end to end.

Note

Python 3.12+

1.1. Don’t do this

1import os
2from pathlib import Path
3
4root = Path('src')
5for dirpath, dirnames, filenames in os.walk(root):
6    for filename in filenames:
7        if filename.endswith('.py'):
8            print(Path(dirpath) / filename)

1.2. Do this

1from pathlib import Path
2
3root = Path('src')
4for dirpath, dirnames, filenames in root.walk():
5    for filename in filenames:
6        if filename.endswith('.py'):
7            print(dirpath / filename)