Python ofrece dos módulos clave:
os→ trabajar con rutas, carpetas, archivos, permisosshutil→ copiar, mover, borrar y operaciones de alto nivel
Vamos paso a paso.
1. Módulo os
Listar archivos y carpetas
import os
print(os.listdir(".")) # Lista el directorio actual
Crear carpetas
os.mkdir("nueva_carpeta")
Crear carpetas anidadas
os.makedirs("carpeta1/carpeta2/carpeta3")
Comprobar si un archivo existe
if os.path.exists("archivo.txt"):
print("Existe")
Renombrar archivos
os.rename("viejo.txt", "nuevo.txt")
Eliminar archivos
os.remove("archivo.txt")
Eliminar carpetas vacías
os.rmdir("carpeta_vacia")
2. Módulo shutil
Copiar archivos
import shutil
shutil.copy("origen.txt", "copia.txt")
Copiar carpetas completas
shutil.copytree("carpeta_original", "carpeta_copia")
Mover archivos o carpetas
shutil.move("archivo.txt", "nueva_ruta/archivo.txt")
Eliminar carpetas con contenido
shutil.rmtree("carpeta_con_archivos")
3. Trabajar con rutas (os.path)
Unir rutas correctamente
ruta = os.path.join("carpeta", "archivo.txt")
Obtener nombre del archivo
os.path.basename("/ruta/completa/archivo.txt")
Obtener carpeta contenedora
os.path.dirname("/ruta/completa/archivo.txt")
Comprobar si es archivo o carpeta
os.path.isfile("archivo.txt")
os.path.isdir("carpeta")
ACTIVIDAD PRÁCTICA: “Organizador automático de archivos”
Objetivo: que tus alumnos creen un script que organice archivos por tipo, como hacen los programas de limpieza de descargas.
Enunciado
Crea un programa que:
Pida al usuario una carpeta origen.
Cree dentro de ella subcarpetas según tipo de archivo:
imagenes→ .jpg, .png, .gifdocumentos→ .pdf, .docx, .txtvideos→ .mp4, .aviotros→ cualquier otro tipo
Mueva cada archivo a su carpeta correspondiente.
Muestre un resumen final con cuántos archivos movió.
Pistas
Usa
os.listdir()para obtener los archivos.Usa
os.path.splitext()para obtener la extensión.Usa
shutil.move()para moverlos.Crea carpetas solo si no existen.
Solución propuesta
import os
import shutil
def organizar_carpeta(ruta):
# Diccionario de tipos
tipos = {
"imagenes": [".jpg", ".jpeg", ".png", ".gif"],
"documentos": [".pdf", ".docx", ".txt"],
"videos": [".mp4", ".avi"],
}
# Crear carpetas si no existen
for carpeta in ["imagenes", "documentos", "videos", "otros"]:
os.makedirs(os.path.join(ruta, carpeta), exist_ok=True)
contador = 0
# Recorrer archivos
for archivo in os.listdir(ruta):
ruta_archivo = os.path.join(ruta, archivo)
# Saltar carpetas
if os.path.isdir(ruta_archivo):
continue
_, extension = os.path.splitext(archivo)
extension = extension.lower()
# Determinar destino
destino = "otros"
for carpeta, extensiones in tipos.items():
if extension in extensiones:
destino = carpeta
break
# Mover archivo
shutil.move(ruta_archivo, os.path.join(ruta, destino, archivo))
contador += 1
print(f"Organización completada. Archivos movidos: {contador}")
# Programa principal
ruta = input("Introduce la ruta de la carpeta a organizar: ")
organizar_carpeta(ruta)
Ejemplo de salida
Introduce la ruta de la carpeta a organizar: C:\Users\Alumno\Downloads
Organización completada. Archivos movidos: 27