Files
go2_rl_robotlab/scripts/tools/clean_trash.py
wertyuilife fce9166e87 init commit.
2026-03-23 03:17:59 +08:00

63 lines
2.0 KiB
Python

# Copyright (c) 2024-2025 Ziqi Fan
# SPDX-License-Identifier: Apache-2.0
import os
import re
import shutil
def clean_trash(folder_path):
"""
Delete folders that meet the following conditions:
1. Contain `events.out.*` files.
2. Also meet:
- No `.pt` files, or
- Less than 3 `.pt` files.
:param folder_path: Target folder path
"""
if not os.path.exists(folder_path):
print(f"Folder {folder_path} does not exist.")
return
# List of folders to delete
folders_to_delete = []
# Traverse subfolders
for root, dirs, files in os.walk(folder_path):
# Regex match `events.out.*` and `.pt` files
event_pattern = re.compile(r"events\.out.*")
model_pattern = re.compile(r"model_\d+\.pt")
event_files = [f for f in files if event_pattern.match(f)]
model_files = [f for f in files if model_pattern.match(f)]
# Check delete conditions: have `events.out.*` files, but no `.pt` files or less than 3 `.pt` files
if event_files and (len(model_files) < 3):
folders_to_delete.append(os.path.abspath(root))
# If there are folders that meet the conditions, prompt and delete
if folders_to_delete:
print("The following folders contain `events.out.*` and meet the deletion conditions, they will be deleted:")
for folder in folders_to_delete:
print(f" - {folder}")
# Confirm deletion
confirm = input("Confirm deletion of these folders? (y/n): ").strip().lower()
if confirm == "y":
for folder in folders_to_delete:
shutil.rmtree(folder) # Delete the entire folder
print(f"Deleted: {folder}")
print("All folders that meet the conditions have been deleted.")
else:
print("Deletion operation canceled.")
else:
print("No folders meet the conditions, no need to delete.")
# Example call
if __name__ == "__main__":
# folder = input("Please enter the target folder path: ").strip()
folder = "logs"
clean_trash(folder)