From 8de8a88587b7209cf7c2802031c2097bac7bf9de Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 2 May 2023 00:05:08 +0200 Subject: [PATCH] Add more heuristics for search_accdb --- wgmaster/export.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/wgmaster/export.py b/wgmaster/export.py index cc733fc..9c7929f 100644 --- a/wgmaster/export.py +++ b/wgmaster/export.py @@ -14,8 +14,7 @@ import pypyodbc import csv -IGNORED_PATHS = ['C:\\Windows'] -IGNORED_NAMES = ['Program Files', 'Program Files (x86)', 'AppData'] +IGNORED_NAMES = ['Windows', 'Program Files', 'Program Files (x86)', 'AppData'] def get_drives() -> List[str]: @@ -31,14 +30,17 @@ def search_accdb(base_path: str = None) -> Generator[str, None, None]: for drive in get_drives(): yield from search_accdb(f'{drive}:') return + elif base_path.count('\\') >= 8: + return try: - for entry in os.scandir(f'{base_path}\\'): + entries = [e for e in os.scandir(f'{base_path}\\')] + for entry in entries: path = f'{base_path}\\{entry.name}' - if path in IGNORED_PATHS or entry.name in IGNORED_NAMES: + if entry.name in IGNORED_NAMES: continue - if entry.is_file() and entry.name.lower().endswith('.accdb'): + elif entry.is_file() and entry.name.lower().endswith('.accdb'): yield path - elif entry.is_dir() and not entry.is_symlink(): + elif len(entries) <= 50 and entry.is_dir() and not entry.is_symlink(): yield from search_accdb(path) except PermissionError: pass