import os
import shutil

def find_and_delete_empty_subfolders(root_folder):
    deleted_folders = []

    # Walk bottom-up so we delete inner empty folders first
    for dirpath, dirnames, filenames in os.walk(root_folder, topdown=False):
        if not filenames:  # no files directly inside
            # Check if all children are directories (or empty after recursive delete)
            all_dirs = True
            for child in dirnames:
                child_path = os.path.join(dirpath, child)
                # If any child directory still has files, this folder is not empty
                for _, _, child_files in os.walk(child_path):
                    if child_files:
                        all_dirs = False
                        break
                if not all_dirs:
                    break

            if all_dirs:
                try:
                    shutil.rmtree(dirpath)
                    deleted_folders.append(dirpath)
                except Exception as e:
                    print(f"Could not delete {dirpath}: {e}")

    return deleted_folders


if __name__ == "__main__":
    folder = input("Enter the folder path: ").strip()
    if os.path.isdir(folder):
        deleted = find_and_delete_empty_subfolders(folder)
        if deleted:
            print("Deleted subfolders (no files, only folders):")
            for d in deleted:
                print(d)
        else:
            print("No subfolders matched the condition.")
    else:
        print("Invalid folder path.")
