Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

30 rader
1016 B

import os
def list_files_absolute(start_dir, extensions=None):
start_dir = os.path.expanduser(start_dir)
return _list_files(start_dir, start_dir, extensions)
def list_files_relative(start_dir, extensions=None):
start_dir = os.path.expanduser(start_dir)
return _list_files(start_dir, start_dir, extensions, relative=True)
def _list_files(start_dir, cur_dir, extensions=None, relative=False):
paths = []
with os.scandir(cur_dir) as scanner:
for entry in scanner:
if entry.is_dir():
paths += _list_files(start_dir, entry.path, extensions, relative)
elif (
extensions is not None
and any([entry.name.endswith("." + ext) for ext in extensions])
) or extensions is None:
if relative:
name = os.path.relpath(entry.path, start=start_dir)
else:
name = entry.path
paths.append((name, entry.stat()))
return paths