@@ -321,8 +321,6 @@ def walk(location, ignored=None, follow_symlinks=False):
321321 If `follow_symlinks` is True, then symlinks will not be ignored and be
322322 collected like regular files and directories
323323 """
324- # TODO: consider using the new "scandir" module for some speed-up.
325-
326324 is_ignored = ignored (location ) if ignored else False
327325 if is_ignored :
328326 if TRACE :
@@ -335,13 +333,12 @@ def walk(location, ignored=None, follow_symlinks=False):
335333 elif filetype .is_dir (location , follow_symlinks = follow_symlinks ):
336334 dirs = []
337335 files = []
338- # TODO: consider using scandir
339- for name in os .listdir (location ):
340- loc = os .path .join (location , name )
336+ for entry in os .scandir (location ):
337+ loc = os .path .join (location , entry .name )
341338 if filetype .is_special (loc ) or (ignored and ignored (loc )):
342339 if (
343340 follow_symlinks
344- and filetype . is_link ( loc )
341+ and entry . is_symlink ( )
345342 and not filetype .is_broken_link (location )
346343 ):
347344 pass
@@ -351,10 +348,10 @@ def walk(location, ignored=None, follow_symlinks=False):
351348 logger_debug ("walk: ignored:" , loc , ign )
352349 continue
353350 # special files and symlinks are always ignored
354- if filetype .is_dir (loc , follow_symlinks = follow_symlinks ):
355- dirs .append (name )
356- elif filetype .is_file (loc , follow_symlinks = follow_symlinks ):
357- files .append (name )
351+ if entry .is_dir (follow_symlinks = follow_symlinks ):
352+ dirs .append (entry . name )
353+ elif entry .is_file (follow_symlinks = follow_symlinks ):
354+ files .append (entry . name )
358355 yield location , dirs , files
359356
360357 for dr in dirs :
0 commit comments