| import os
|
| import random
|
| from tqdm import tqdm
|
|
|
|
|
|
|
|
|
|
|
| def delete_files(dir1: str, dir2: str) -> bool:
|
| """
|
| Desc:
|
| This method compares two directories and deletes files if present.
|
| Args:
|
| dir1 (str): Path to the directory 1.
|
| dir2 (str): Path to the directory 2.
|
| Returns:
|
| True, if the deletion was complete, otherwise False.
|
| """
|
| try:
|
| if not os.path.isdir(dir1) or not os.path.isdir(dir2):
|
| return False
|
|
|
| dir1_files = set(os.listdir(dir1))
|
| dir2_files = set(os.listdir(dir2))
|
|
|
| for idx, file in enumerate(dir1_files):
|
| print(f"Processing file {idx}...")
|
|
|
| file_path = os.path.join(dir1, file)
|
| if os.path.isfile(file_path):
|
|
|
| if file in dir2_files:
|
|
|
| os.remove(file_path)
|
|
|
| return True
|
|
|
| except Exception as delete_ex:
|
| print(f"Deletion error: {delete_ex}.")
|
| return False
|
|
|
|
|
|
|
|
|
|
|
| def delete_n_random_files(dir: str, n: int) -> bool:
|
| """
|
| Desc:
|
| This method deletes 'n' random files from the provided directory.
|
| Args:
|
| dir (str): Path to the directory.
|
| n (int): The number of random files to be deleted.
|
| Returns:
|
| True, if the deletion was complete, otherwise False.
|
| """
|
| try:
|
| if not os.path.isdir(dir):
|
| print(f"Directory '{dir}' does not exist.")
|
| return False
|
|
|
|
|
| all_files = [f for f in os.listdir(dir) if os.path.isfile(os.path.join(dir, f))]
|
|
|
| if len(all_files) < n:
|
| print(f"Cannot delete '{n}' files, directory only contains '{len(all_files)}' files.")
|
| return False
|
|
|
| files_to_delete = random.sample(all_files, n)
|
|
|
| for file in tqdm(files_to_delete):
|
| file_path = os.path.join(dir, file)
|
| os.remove(file_path)
|
|
|
| return True
|
|
|
| except Exception as delete_ex:
|
| print(f"Error occurred while deleting: {str(delete_ex)}.")
|
| return False
|
|
|
|
|
|
|
|
|
|
|
| def delete_files_name_contains(dir: str, word: str) -> bool:
|
| """
|
| Desc:
|
| Deletes all files in a directory whose filenames contain a specific word (case-insensitive).
|
| Parameters:
|
| dir (str): The directory to search for files.
|
| word (str): Substring to search for in filenames.
|
| Returns:
|
| bool: True if deletion completes (even if no files matched), False if an error occurred.
|
| """
|
| try:
|
| if not os.path.isdir(dir):
|
| print(f"Directory '{dir}' does not exist.")
|
| return False
|
|
|
| all_files = [f for f in os.listdir(dir) if os.path.isfile(os.path.join(dir, f))]
|
|
|
| for file in tqdm(all_files, desc="Deleting files"):
|
| if word.lower() in file.lower():
|
| file_path = os.path.join(dir, file)
|
| os.remove(file_path)
|
|
|
| return True
|
|
|
| except Exception as delete_ex:
|
| print(f"Error occurred while deleting: {str(delete_ex)}.")
|
| return False
|
|
|
|
|
|
|
|
|
|
|
| if __name__ == "__main__":
|
|
|
| dir1 = ""
|
| dir2 = ""
|
| delete_files(dir1, dir2) |