import os import shutil import re import logging logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) def group_files_by_prefix(directory, downloading_files, patterns): if not os.path.isdir(directory): logger.error(f"The directory {directory} does not exist.") return files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))] for file in files: skip = False for downloading_file in downloading_files: if file.startswith(downloading_file): logger.info(f"File {file} is downloading. Skipping...") skip = True continue if skip: continue for pattern_str in patterns: pattern = re.compile(pattern_str) match = pattern.match(file) if match: prefix_dir = os.path.join(directory, match.group(1)) if not os.path.exists(prefix_dir): os.makedirs(prefix_dir) shutil.move(os.path.join(directory, file), os.path.join(prefix_dir, file))