Saltar al contenido

python

Cómo copiar un fichero con Python

Descubre en este tutorial las diferentes formas que existen de copiar un fichero en Python: copiar el contenido, metadatos, permisos, ...

Cómo copiar un fichero con Python

Si necesitas copiar un fichero con Python y no sabes cómo, has llegado al lugar indicado.

Cuando quieres copiar un fichero se pueden presentar varios escenarios: copiar solo el contenido, aceptar un directorio destino como parámetro, copiar metadatos, etc. Es por ello que Python ofrece diferentes alternativas a la hora de copiar un fichero. Veremos aquí las más comunes haciendo uso del módulo shutil.

Copiar un fichero en Python usando la función copy

copy es la función principal que debes usar si quieres copiar un fichero en Python. Como te decía, se encuentra definida dentro del módulo shutil. La principal característica de esta función es que copia el contenido del fichero y sus permisos, pero no copia otro tipo de metadatos como las fechas de creación y modificación originales.

¿Cómo funciona exactamente? Esta función define los siguientes parámetros:

  • src: Ruta completa o nombre del fichero origen. Puede ser un string o un objeto de tipo PathLike.
  • dst: Ruta del fichero destino. Si la ruta es un directorio, se copiará el fichero origen en el directorio tomando como nombre el nombre del fichero original.
  • follow_symlinks (por defecto, True): Si follow_symlinks es falso y src es un enlace simbólico, dst se creará como un enlace simbólico. Si follow_symlinks es verdadero y src es un enlace simbólico, dst será una copia del archivo al que se refiere src.

Veamos algunos ejemplos de uso:

import shutil

shutil.copy('origen.txt', 'destino.txt')
shutil.copy('/ruta/a/origen.txt', '/ruta/destino/copia.txt')
shutil.copy('/ruta/a/origen.txt', '/ruta/destino')

Copiar los metadatos con copy2

Si adicionalmente necesitas copiar los metadatos de un fichero, puedes usar la función copy2. Esta función se comporta exactamente igual que la función copy del apartado anterior, con la diferencia de que también mantiene los metadatos del fichero original en el fichero destino.

import shutil

shutil.copy2('origen.txt', 'destino.txt')
shutil.copy2('/ruta/a/origen.txt', '/ruta/destino/copia.txt')
shutil.copy2('/ruta/a/origen.txt', '/ruta/destino')

Copiar solo el contenido de un fichero

Cuando solo quieres copiar el contenido de un fichero, puedes hacer uso de la función copyfile(src, dst, follow_symlinks=True). Esta función hace una copia del fichero original src en el fichero destino dst.

Tanto src como dst son strings con las rutas completas de los ficheros origen y destino, respectivamente. Además, si el fichero destino ya existe, este será reemplazado.

Otra cosa a tener en cuenta de esta función es que se debe poder escribir en el destino, si no, se lanzará una excepción de tipo OSError.

import shutil

shutil.copyfile('origen.txt', 'destino.txt')
shutil.copyfile('/ruta/a/origen.txt', '/ruta/destino/copia.txt')

Copiar el contenido de un fichero haciendo uso de objetos fichero

La última función que vamos a ver es copyfileobj. Esta función es similar a la anterior, solo que src y dst deben ser objetos de tipo fichero (no strings con las rutas origen/destino).

import shutil

file_src = 'source.txt'  
f_src = open(file_src, 'rb')

file_dest = 'destination.txt'  
f_dest = open(file_dest, 'wb')

shutil.copyfileobj(f_src, f_dest)

Resumen de las funciones del módulo shutil

FunciónMantiene permisosCopia otros metadatosSoporta directorio como destinoAcepta objetos fichero
shutil.copySíNoSíNo
shutil.copy2SíSíSíNo
shutil.copyfileNoNoNoNo
shutil.copyfileobjNoNoNoSí

Newsletter EstrategIA

Programar con IA sin perder el control

Si te ha interesado este artículo, esto también te va a interesar. Cada dos martes te cuento qué funciona y qué no al construir software con agentes de IA, con ejemplos reales de mi software factory y los números de mis proyectos, sin maquillar.

9.277 desarrolladores y profesionales ya la leen martes quincenales

EstrategIA Próximo número · martes

Lo que recibes

  1. Qué funciona (y qué no) programando con agentes de IA
  2. Casos reales de MaIA y DGC: decisiones, errores y resultados
  3. Los números de mis proyectos, sin maquillar
  4. Una idea que puedes aplicar esa misma semana

Sin spam. Te das de baja con un clic.

j2logo

Sigue leyendo

Listar directorio en Python
python

Listar directorio en Python. Listar ficheros de un directorio

requests - Hacer peticiones http en Python
python

Python requests. La librería para hacer peticiones http en Python

Web scraping con Python. Guía de inicio a BeautifulSoup
python

Web scraping con Python. Extraer datos de una web. Guía de inicio de Beautiful Soup

Prompt code review python
dev

El mejor prompt para hacer Code Review en Python