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(origen, destino) 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.

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.

Deja una respuesta