36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
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)) |