Python: copia archivos de subcarpetas a la carpeta principal

En este artículo, discutiremos cómo copiar un archivo de la subcarpeta a la carpeta principal. El árbol de directorios que se utilizará para la explicación en este artículo es el que se muestra a continuación:

D:\projects\base
|
|__subfolder:
|    \__file.txt
|      
|__main.py
| 

Aquí tenemos una carpeta llamada «base» en la que tenemos una carpeta llamada «subcarpeta» que contiene un archivo con el nombre de archivo.txt. Vamos a copiar el archivo.txt en la carpeta base de la subcarpeta.

Python viene con varios módulos que ofrecen una variedad de formas de realizar operaciones de entrada/salida y las discutiremos aquí.

Los diversos métodos que discutiremos incluyen: –

  1. Usando shutil.copyfile()
  2. Usando shutil.copy()
  3. Usando shutil.copy2()
  4. Usando shutil.copyfileobj()

Método 1: Usar shutil.copyfile()

Usando el método copyfile() de la biblioteca shutil , podemos copiar fácilmente un archivo de una ubicación a otra ubicación. Se necesitan 2 argumentos, la ruta de origen donde existe el archivo que se debe copiar y la ruta de destino donde se necesita copiar el archivo. A continuación se muestra el código para la implementación de este método:

Python

# importing the shutil module
import shutil
 
# storing the current path of file.txt
# in the source variable
source = 'D:/projects/base/subfolder/file.txt'
 
# storing the destination path in the
# destination variable
destination = 'D:/projects/base/file.txt'
 
# calling the shutil.copyfile() method
shutil.copyfile(source,destination)

Después de ejecutar este código, notaremos que el archivo llamado file.txt se ha copiado en la carpeta base.

Algunos puntos a tener en cuenta sobre el método shutil.copyfile():-

  • La ubicación de destino debe ser escribible; de ​​lo contrario, se generará una excepción IOError.
  • Si el destino ya existe, será reemplazado.
  • Con esta función no se pueden copiar archivos especiales como dispositivos de caracteres o bloques y conductos.
  • No copia los metadatos.

Método 2: Usar shutil.copy()

Usando el método shutil.copy() también podemos copiar el archivo. El único cambio en la sintaxis que podemos decir es que la string de destino que pasamos también puede ser el directorio en lugar de la ruta completa del archivo. Por ejemplo, vea el siguiente código:

Python

# importing the shutil module
import shutil
 
# storing the current file path of file.txt
# in the source variable
source = 'D:/projects/base/subfolder/file.txt'
 
# storing the destination directory in the
# destination variable
destination = 'D:/projects/base'
 
# calling the shutil.copy() method
shutil.copy(source,destination)

Después de ejecutar este código, notaremos que el archivo llamado file.txt se ha copiado en la carpeta base.

La principal diferencia en el método copyfile() y copy() son:

  • El método copy() también copia la información sobre el permiso pero el método copyfile() no lo hace.
  • La string de destino puede ser un directorio o una ruta completa del archivo en el método copy() pero en el método copyfile() debería ser la ruta completa del archivo.

Método 3: Usar shutil.copy2()

El método shutil.copy2() también es como el método shutil.copy() pero lo adicional que hace es copiar los metadatos como marcas de tiempo.
El código será similar al anterior:

Python

# importing the shutil module
import shutil
 
# storing the current path of file.txt
# in the source variable
source = 'D:/projects/base/subfolder/file.txt'
 
# storing the destination path in the
# destination variable
destination = 'D:/projects/base'
 
# calling the shutil.copy2 method
shutil.copy2(source,destination)

Después de ejecutar este código, notaremos que el archivo llamado file.txt se ha copiado en la carpeta base.

Método 4: Usar shutil.copyfileobj()

El shutil.copyfileobj() también es similar al método discutido anteriormente, pero las cosas diferentes son, en primer lugar, que toma el objeto del archivo en lugar de las rutas del archivo y, en segundo lugar, toma un argumento de opción adicional que es la cantidad de bytes guardados en la memoria durante el proceso de copia. El valor predeterminado es 16 KB.

El código para copiar usando el método anterior será:

Python

# importing shutil module
import shutil
   
# Source file
source = 'D:/projects/base/subfolder/file.txt'
   
# Open the source file
# in read mode and
# get the file object
fsrc = open(source, 'r')
   
   
# destination file
dest = 'D:/projects/base/file.txt'
   
# Open the destination file
# in write mode and
# get the file object
fdst = open(dest, 'w')
   
   
# Now, copy the contents of
# file object f1 to f2
# using shutil.copyfileobj() method
shutil.copyfileobj(fsrc, fdst)
   
# We can also specify
# the buffer size by passing
# optional length parameter
# like shutil.copyfileobj(fsrc, fdst, 1024)
 
   
# Close file objects
fdst.close()
fsrc.close()

Después de ejecutar este código, notaremos que el archivo llamado file.txt se ha copiado en la carpeta base.

También podemos recordar la diferencia entre los métodos anteriores usando la tabla dada:

Publicación traducida automáticamente

Artículo escrito por yashgupta0524 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *