Copiar archivos en Python con shutil.copy() y shutil.copystat()
Copiar archivos en Python con shutil.copy() y shutil.copystat()
Conceptos básicos de copia de archivos en Python
El módulo shutil de Python ofrece funciones directas para copiar archivos y preservar metadatos. Las dos utilidades principales son shutil.copy() y shutil.copystat().
copy(origen, destino)
Copia el archivo ubicado en origen al destino. El contenido del archivo se duplica, pero los permisos y marcas de tiempo no se preservan.
copystat(origen, destino)
Copia metadatos del archivo —incluyendo permisos, marcas de tiempo y otros atributos específicos del SO— desde origen a destino. Debe llamarse después de un copy() exitoso para replicar el estado completo del archivo.
Ejemplo paso a paso
- Localizar el archivo origen
Confirma queguru99.txtexiste en el directorio de trabajo actual y obtén su ruta absoluta.

import os
from os import path
ruta_origen = path.realpath("guru99.txt")
print("Origen:", ruta_origen)
- Crear nombre de respaldo
Añade.bakal nombre original para formar la ruta de destino.
ruta_destino = ruta_origen + ".bak"
print("Destino:", ruta_destino)
- Copiar el contenido del archivo
Usashutil.copy()para duplicar los datos del archivo.
import shutil shutil.copy(ruta_origen, ruta_destino)
- Copiar los metadatos
Después de la copia de contenido, replica los permisos y marcas de tiempo del archivo original.
shutil.copystat(ruta_origen, ruta_destino)
- Verificar la copia
Usaos.path.getmtime()para mostrar la última hora de modificación del archivo de respaldo.
import datetime
tiempo_mod = path.getmtime(ruta_destino)
print("Última modificación:", datetime.datetime.fromtimestamp(tiempo_mod))
Ejecutar el script creará guru99.txt.bak en el mismo directorio, completo con los mismos permisos y marcas de tiempo que el original.
Consejos prácticos
- Siempre realiza
shutil.copy()antes deshutil.copystat()—este último requiere un archivo de destino existente. - Al trabajar entre diferentes sistemas de archivos, ten en cuenta que no todos los atributos de metadatos son compatibles;
copystat()copiará solo lo que el SO exponga. - Para copia recursiva de directorios, considera
shutil.copytree()oshutil.copy2(), que combinacopy()ycopystat()en un solo paso.
Resumen
- Usa
shutil.copy(origen, destino)para duplicar el contenido del archivo. - Usa
shutil.copystat(origen, destino)para duplicar permisos, marcas de tiempo y otros metadatos.
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Entrada/Salida de Archivos en Python: Dominando Operaciones de Lectura, Escritura y Gestión
- Python len(): Guía Práctica para Medir Longitud de Objetos
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Comprobación de existencia de archivos y directorios en Python – Guía práctica
- Python JSON: Codificación, decodificación y manejo de archivos – Guía práctica
- Entrada/Salida de Archivos en Python: Domina las Operaciones I/O