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:
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)
: Cuandofollow_symlinks
es falso y src es un enlace simbólico, dst se creará como un enlace simbólico. Sifollow_symlinks
es verdadero y src es un enlace simbólico,dst
será una copia del archivo al que se refieresrc
.
import shutil
shutil.copy('origen.txt', 'destino.txt')
shutil.copy('/ruta/origen.txt', '/ruta/destino/copia.txt')
shutil.copy('/ruta/origen.txt', '/ruta/destino')
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.