Python: Scripts para ordenar archivos por extensión en una carpeta
Entrada rápida…
Os voy a explicar vuestros ficheros de una carpeta mediante automatización, generando un script de Python.
Muchas veces, cuando vas generando ficheros en un NAS o en tu ordenador personal, acumulas cientos de ficheros. A mi me pasa con las capturas del blog, y se me suelen mezclar.
Os dejo varios ejemplos que podéis utilizar mediante Python para ordenar ficheros en vuestras mega-carpetas:
- Estos scripts utilizan el módulo
os
para interactuar con el sistema de archivos y el móduloshutil
para mover los archivos.
Ejemplo 1: Ordenar archivos por extensión en subcarpetas
Este script moverá todos los archivos en la carpeta especificada a subcarpetas basadas en sus extensiones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import os import shutil def ordenar_por_extension(carpeta): # Crear un diccionario para mantener la cuenta de las extensiones extensiones = {} for archivo in os.listdir(carpeta): # Obtener la extensión del archivo ext = os.path.splitext(archivo)[1].lower() if ext: # Crear una subcarpeta para la extensión si no existe dir_ext = os.path.join(carpeta, ext[1:]) # quita el punto de la extensión os.makedirs(dir_ext, exist_ok=True) # Mover el archivo a la subcarpeta shutil.move(os.path.join(carpeta, archivo), os.path.join(dir_ext, archivo)) # Llamar a la función con el camino a la carpeta ordenar_por_extension('/ruta/a/tu/carpeta') |
Ejemplo 2: Ordenar y renombrar archivos por extensión
Este script además de mover los archivos a subcarpetas basadas en sus extensiones, renombra los archivos para evitar conflictos si dos archivos de diferentes carpetas tienen el mismo nombre.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import os import shutil def ordenar_y_renombrar(carpeta): # Crear un diccionario para mantener la cuenta de las extensiones extensiones = {} for archivo in os.listdir(carpeta): # Obtener la extensión del archivo ext = os.path.splitext(archivo)[1].lower() if ext: # Crear una subcarpeta para la extensión si no existe dir_ext = os.path.join(carpeta, ext[1:]) # quita el punto de la extensión os.makedirs(dir_ext, exist_ok=True) # Construir el nuevo nombre del archivo para evitar duplicados nuevo_nombre = archivo while os.path.exists(os.path.join(dir_ext, nuevo_nombre)): nombre_base, ext = os.path.splitext(nuevo_nombre) nuevo_nombre = f"{nombre_base}_nuevo{ext}" # Mover y renombrar el archivo shutil.move(os.path.join(carpeta, archivo), os.path.join(dir_ext, nuevo_nombre)) # Llamar a la función con el camino a la carpeta ordenar_y_renombrar('/ruta/a/tu/carpeta') |
Ejemplo 3: Clasificar archivos sin mover los directorios
Este script clasifica solo los archivos ignorando los directorios.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import os import shutil def clasificar_archivos(carpeta): for archivo in os.listdir(carpeta): if os.path.isfile(os.path.join(carpeta, archivo)): ext = os.path.splitext(archivo)[1].lower() if ext: dir_ext = os.path.join(carpeta, ext[1:]) # quita el punto de la extensión os.makedirs(dir_ext, exist_ok=True) shutil.move(os.path.join(carpeta, archivo), os.path.join(dir_ext, archivo)) clasificar_archivos('/ruta/a/tu/carpeta') |
Estos scripts son bastante directos y puedes modificarlos según tus necesidades específicas, como agregar logs o manejar excepciones de manera más específica.
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?