Copiar un fichero en Python con shutil

Veamos hoy como copiar un fichero en Python con shutil, que es un modulo que Python ofrece para este tipo de acciones

Tenemos varias opciones, a continuación, te las muestro:

copy

Este es un modulo de Python, que pertenece a shutil().

copy() copia el contenido del fichero y sus permisos, pero sin embargo, no copia los metadatos del fichero.

copy() acepta como parámetros, los siguientes:

  • src: Ruta completa del fichero origen, en formato cadenav(string), o un objeto(PathLike)
  • dst: Ruta del fichero  de destino. En este caso  hay que considerar que si la ruta es un directorio, se copiará el fichero origen en el directorio y tomará como nombre el del fichero original.
  • follow_symlinks (default =True): Cuando 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.
import shutil
shutil.copy('origen.txt', 'destino.txt')
shutil.copy('/ruta/origen.txt', '/ruta/destino/copia.txt')
shutil.copy('/ruta/origen.txt', '/ruta/destino')

Otros artículos sobre Python

copy2

La función copy2(), permite copiar los metadatos del archivo y funciona exactamente igual que copy().

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

Copyfile

copyfile() permite  copiar  solo el contenido de un fichero.

Su sintaxis es:

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 cadenas de texto que ofrecen rutas.

Considera, que si el fichero destino ya existe, este será reemplazado.

La función lanzara un OSError, si no se puede  escribir en el destino.

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

Copyfileobj

Esta función funciona como  copyfile(), con la diferencia  de que src() y dst() deben ser objetos de tipo fichero (no  un string con las rutas).

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)

Y hasta aquí, esto es todo.

Espero que sirva de ayuda a alguien

Para ser parte del 1%, hay que hacer lo que el 99% no hace.

D.