#!/usr/bin/env python3 import os import argparse def main(): parser = argparse.ArgumentParser( description="Retain specified number of files in a directory sorted by name, delete others." ) parser.add_argument("directory", type=str, help="Path to target directory") parser.add_argument( "--keep", type=int, default=2, help="Number of files to retain (default: 2)" ) args = parser.parse_args() # Validate arguments if args.keep < 0: parser.error("--keep value cannot be negative") if not os.path.isdir(args.directory): parser.error(f"Directory not found: {args.directory}") # Get list of files (exclude subdirectories) files = [] with os.scandir(args.directory) as entries: for entry in entries: if entry.is_file(): files.append(entry.name) # Sort files alphabetically sorted_files = sorted(files) # Identify files to delete to_delete = sorted_files[: -args.keep] if args.keep > 0 else sorted_files.copy() # Delete files and print results for filename in to_delete: filepath = os.path.join(args.directory, filename) try: os.remove(filepath) print(f"Deleted: {filename}") except Exception as e: print(f"Error deleting {filename}: {str(e)}") if __name__ == "__main__": main()