0Pricing
Python Academy · Lección

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/copy2 copian archivos; copytree copia árboles completos.
  • move cambia nombres o reubica elementos; rmtree elimina árboles.
  • make_archive/unpack_archive gestionan archivos zip y tar.
  • which y disk_usage consultan 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

  1. Ejecución de comandos con subprocess
  2. Captura de la salida
  3. Entorno y módulo os
  4. shutil para operaciones con archivos
← Volver a Python Academy