prediction_postprocessing_scripts/merge_data.py (26 lines of code) (raw):

import os import shutil # Define the base folder and the subfolders you want to merge base_dir = "../data/temp_data/copy_results_average_aggregated_195" ding_dir = os.path.join(base_dir, "all_best_default_mixed_4_cpd") os.makedirs(ding_dir, exist_ok=True) # List of subfolders to merge into 'ding' folders_to_merge = ["all_best_default"] # folders_to_merge = ["union_kcpa_bocpd", "union_mongodb_bocpd","union_mongodb_kcpa","union_mongodb_pelt","union_pelt_bocpd","union_pelt_kcpa"] # Helper function to merge the contents of two directories def merge_folders(src_dir, dest_dir): for root, dirs, files in os.walk(src_dir): # Get the relative path of the current folder from the source directory relative_path = os.path.relpath(root, src_dir) # Construct the corresponding destination directory path dest_folder = os.path.join(dest_dir, relative_path) # Create the destination directory if it doesn't exist if not os.path.exists(dest_folder): os.makedirs(dest_folder) # Move or copy files from the source to the destination for file in files: # Skip files that start with '._' if file.startswith("._"): continue src_file = os.path.join(root, file) dest_file = os.path.join(dest_folder, file) # If file already exists, skip (to avoid overwriting) if not os.path.exists(dest_file): shutil.copy2(src_file, dest_file) # Merge each folder in the list into 'ding' for folder_name in folders_to_merge: folder_path = os.path.join(base_dir, folder_name) for subfolder in os.listdir(folder_path): subfolder_path = os.path.join(folder_path, subfolder) if os.path.isdir(subfolder_path): merge_folders(subfolder_path, os.path.join(ding_dir, subfolder)) print('Merge complete')