Copiado de archivos y carpetas con el módulo shutil
El módulo shutil (o utilidades del shell) tiene funciones que te permiten copiar, mover, renombrar y borrar archivos en tus programas de Python. Para utilizar las funciones de shutil, primero tendrá que utilizar import shutil
.
El módulo shutil proporciona funciones para copiar archivos, así como carpetas enteras.
Al llamar a shutil.copy(
se copiará el archivo en la ruta de origen a la carpeta en la ruta de destino. (Tanto el origen como el destino pueden ser cadenas u objetos Path.) Si el destino es un nombre de archivo, se utilizará como el nuevo nombre del archivo copiado. Esta función devuelve una cadena o un objeto Path del archivo copiado.origen, destino
)
Copiar un archivo
Introduzca lo siguiente en el shell interactivo para ver cómo funciona shutil.copy():
>>> import shutil, os
>>> from pathlib import Path
>>> p = Path.home()
➊ >>> shutil.copy(p / 'spam.txt', p / 'some_folder')
'C:\\Users\\Al\\some_folder\\spam.txt'
➋ >>> shutil.copy(p / 'eggs.txt', p / 'some_folder/eggs2.txt')
WindowsPath('C:/Users/Al/some_folder/eggs2.txt')
La primera llamada a shutil.copy()
copia el fichero en C:\Users\Al\spam.txt
a la carpeta C:\Users\Al\some_folder
. El valor de retorno es la ruta del archivo recién copiado. Tenga en cuenta que, dado que se ha especificado una carpeta como destino ➊, el nombre del archivo original spam.txt
se utiliza para el nombre del nuevo archivo copiado. La segunda llamada a shutil.copy()
➋ también copia el archivo en C:\Users\Al\eggs.txt
a la carpeta C:\Users\Al\some_folder
pero le da al archivo copiado el nombre eggs2.txt
.
Copiar una carpeta con todo su contenido
Mientras que shutil.copy()
copiará un solo archivo, shutil.copytree()
copiará una carpeta entera y todas las carpetas y archivos que contenga. Si se llama a shutil.copytree(origen, destino)
se copiará la carpeta de la ruta de origen, junto con todos sus archivos y subcarpetas, a la carpeta de la ruta de destino. Los parámetros de origen y destino son cadenas. La función devuelve una cadena con la ruta de la carpeta copiada.
Introduzca lo siguiente en el shell interactivo:
>>> import shutil, os
>>> from pathlib import Path
>>> p = Path.home()
>>> shutil.copytree(p / 'spam', p / 'spam_backup')
WindowsPath('C:/Users/Al/spam_backup')
La llamada a shutil.copytree()
crea una nueva carpeta llamada spam_backup
con el mismo contenido que la carpeta spam
original. Ahora ha hecho una copia de seguridad de su preciado, preciado spam
.