shutil para operaciones con archivos
Copie, mueva y archive archivos
shutil para operaciones con archivos es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
¿Qué es shutil?
El módulo shutil (utilidades del shell) ofrece operaciones de alto nivel con archivos: copiar, mover, eliminar árboles de directorios y crear archivos comprimidos. Se basa en os para las tareas cotidianas.
import shutil, os
os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
f.write('hello')
print('created a.txt')Copiar un archivo
shutil.copy(src, dst) copia el contenido de un archivo y sus bits de permisos a una ubicación nueva.
import shutil, os
os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))copy frente a copy2
shutil.copy2 funciona como copy, pero también conserva metadatos, como las marcas de tiempo. Úselo cuando las horas de modificación sean importantes.
import shutil, os
os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')Copiar un árbol completo
shutil.copytree(src, dst) copia recursivamente un directorio completo. El destino no debe existir ya (a menos que pase dirs_exist_ok=True).
import shutil, os
os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))Mover archivos y carpetas
shutil.move(src, dst) mueve (o cambia el nombre de) un archivo o directorio. Funciona entre sistemas de archivos en los que os.rename fallaría.
import shutil, os
os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))Eliminar un árbol de directorios
shutil.rmtree(path) elimina un directorio y todo lo que contiene. Úselo con cuidado; no hay forma de deshacer la operación.
import shutil, os
os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))ignore_errors y seguridad
Pasar ignore_errors=True a rmtree evita que se produzca un error si la ruta no existe; resulta útil para limpiar antes de una ejecución desde cero.
import shutil
shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')Crear un archivo comprimido
shutil.make_archive(base_name, format, root_dir) empaqueta un directorio en un archivo zip o tar con una sola llamada.
import shutil, os
os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))Extraer un archivo comprimido
shutil.unpack_archive(filename, extract_dir) invierte el proceso y descomprime un archivo zip o tar en una carpeta.
import shutil, os
shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))Buscar ejecutables
shutil.which(name) localiza un programa en el PATH del sistema, como el comando which del shell. Devuelve la ruta completa o None.
import shutil
print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))Uso del disco
shutil.disk_usage(path) informa de los bytes totales, usados y libres del sistema de archivos que contiene la ruta.
import shutil
usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))Comprobación rápida
Compruebe cuánto ha entendido de shutil.
Resumen
Ha aprendido a usar shutil para trabajar con archivos:
copy/copy2copian archivos;copytreecopia árboles completos.movecambia nombres o reubica elementos;rmtreeelimina árboles.make_archive/unpack_archivegestionan archivos zip y tar.whichydisk_usageconsultan el sistema.
Siguiente curso: crear herramientas de línea de comandos con argparse.
Preguntas frecuentes
¿La lección «shutil para operaciones con archivos» es gratis?
Sí — el texto completo de «shutil para operaciones con archivos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «shutil para operaciones con archivos»?
Copie, mueva y archive archivos Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «shutil para operaciones con archivos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ejecución de comandos con subprocess
- Captura de la salida
- Entorno y módulo os
- shutil para operaciones con archivos