import os import shutil # Directories configuration dirs = { 'image': 'jpg', 'image-parse-v3': 'png', 'cloth': 'jpg', 'cloth-mask': 'jpg' } spare_dir = 'spare' # Ensure the spare directory exists os.makedirs(spare_dir, exist_ok=True) # Function to get base names of files in a directory def get_base_names(dir_path, ext): return {os.path.splitext(f)[0] for f in os.listdir(dir_path) if f.endswith('.' + ext)} # Collect base names from all directories base_names = {} for dir_name, ext in dirs.items(): base_names[dir_name] = get_base_names(dir_name, ext) # Identify files without a match in all directories spare_files = set() for dir_name, names in base_names.items(): # Find files that do not have a match in every other directory other_dirs = set(dirs.keys()) - {dir_name} for base_name in names: if not all(base_name in base_names[other_dir] for other_dir in other_dirs): spare_files.add((dir_name, base_name + '.' + dirs[dir_name])) # Move spare files to the spare directory for dir_name, file_name in spare_files: src = os.path.join(dir_name, file_name) dst = os.path.join(spare_dir, file_name) shutil.move(src, dst) print(f"Moved {src} to {dst}") print("Operation completed.")