Pythonでディレクトリを再帰的にスキャンしてファイルを取得したい場合はos.scandir
を使って次のような感じでできるそうです。
>>> import os
>>> def scandir(path='.'):
... for e in os.scandir(path):
... if e.is_dir():
... yield from scandir(e.path)
... else:
... yield e
...
>>> for e in scandir():
... print(e.path)
...
./directory/file1.txt
./directory/file2.txt
./file3.txt
シンボリックリンクかどうかのチェックはfollow_symlinks
が使えるようです。
e.is_dir(follow_symlinks = False)
リンク
os — Miscellaneous operating system interfaces — Python 3.7.2 documentation
https://docs.python.org/3/library/os.html