init commit.
This commit is contained in:
62
scripts/tools/clean_trash.py
Normal file
62
scripts/tools/clean_trash.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user