import os import re from tkinter import Tk, filedialog, messagebox def limpiar_nombre_archivo(nombre): # Cambiar espacios en blanco por guiones bajos nombre = nombre.replace(' ', '_') # Cambiar eñes por enes nombre = nombre.replace('ñ', 'n') # Eliminar caracteres especiales (dejando solo letras, números y guiones bajos) nombre = re.sub(r'[^a-zA-Z0-9_]', '', nombre) return nombre def seleccionar_archivo(): root = Tk() root.withdraw() # Ocultar la ventana principal de Tkinter archivo = filedialog.askopenfilename(title="Seleccionar archivo") if archivo: # Obtener el directorio y el nombre del archivo directorio = os.path.dirname(archivo) nombre_archivo = os.path.basename(archivo) # Limpiar el nombre del archivo nombre_limpio = limpiar_nombre_archivo(nombre_archivo) # Crear nuevo nombre de archivo con la misma extensión nombre_nuevo = f"{nombre_limpio}{os.path.splitext(nombre_archivo)[1]}" ruta_nueva = os.path.join(directorio, nombre_nuevo) # Crear la copia del archivo with open(archivo, 'rb') as f_original: with open(ruta_nueva, 'wb') as f_copia: f_copia.write(f_original.read()) messagebox.showinfo("Éxito", f"Copia creada: {ruta_nueva}") else: messagebox.showwarning("Advertencia", "No se seleccionó ningún archivo.") if __name__ == "__main__": seleccionar_archivo()