def repl(m):
return m.group(2) * int(m.group(1))
decoded = re.sub('\((\d+)([a-z]+)\)', lambda m: m.group(2) * int(m.group(1)), encoded)
class _RecursiveWildcardSelector(_Selector):
def __init__(self, pat, child_parts):
_Selector.__init__(self, child_parts)
def _iterate_directories(self, parent_path, is_dir, scandir):
yield parent_path
try:
entries = list(scandir(parent_path)) # <-- список создаётся здесь
for entry in entries:
entry_is_dir = False
try:
entry_is_dir = entry.is_dir()
except OSError as e:
if not _ignore_error(e):
raise
if entry_is_dir and not entry.is_symlink():
path = parent_path._make_child_relpath(entry.name)
for p in self._iterate_directories(path, is_dir, scandir):
yield p
except PermissionError:
return