42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
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()
|