blob: df72c388c48507e3d24a74f9cc59ca077445169d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# standard imports
import os
import typing
# exports
__all__: typing.Sequence[str] = (
'list_files',
)
## code ##
def list_files(
roots: typing.Iterable[str],
recursive: bool = True,
follow_symlinks: bool = True,
) -> typing.Iterator[str]:
"""Iterate over all files in *roots*, recursively by default."""
# index input paths
for path in roots:
if not os.path.exists(path):
continue
if os.path.isdir(path) and recursive:
for dirpath, _, filenames in os.walk(path, topdown=True, followlinks=follow_symlinks):
for filename in filenames:
yield os.path.join(dirpath, filename)
if os.path.isfile(path):
yield path
## EOF ##
|