¿Cómo crear un archivo duplicado de un archivo existente usando Python?

En este artículo, discutiremos cómo crear un duplicado del archivo existente en Python. A continuación se muestran las carpetas de origen y destino, antes de crear el archivo duplicado en la carpeta de destino.

Una vez que se ha creado un archivo duplicado en la carpeta de destino, se parece a la imagen de abajo.

Para automatizar la copia y eliminación de archivos en Python, se utiliza el módulo shutil . Ofrece una serie de operaciones de alto nivel en archivos y colecciones de archivos. Con el módulo shutil, podemos copiar archivos y un directorio completo.

Método 1: Usar shutil.copyfile()

Copia el contenido del archivo de origen al archivo de destino de la manera más eficiente posible. No utiliza objetos de archivo y tampoco copia metadatos ni permisos.

Sintaxis: shutil.copyfile(src, dst, *, follow_symlinks=True)

Parámetros:

  • src – src aquí está la ruta completa del archivo fuente.
  • dest: dest es la ruta completa del archivo o directorio de destino. La ubicación de destino debe ser escribible.
  • follow_symlinks (opcional): el valor predeterminado de este parámetro es True. Si se establece en False y src es un enlace simbólico, se creará un nuevo enlace simbólico en lugar de copiar el archivo al que apunta src .

Tipo de retorno: – Devuelve la ruta del archivo duplicado recién creado.

Código:

Python3

# Python program to create the duplicate of
# an already existing file
import os
D = r"F:\Dest"
  
# importing the shutil module
import shutil
  
print("Before copying file:")
print(os.listdir(D))
  
# src contains the path of the source file
src = r"C:\Users\YASH\OneDrive\Desktop\small\Src\Test.py"
  
# dest contains the path of the destination file
dest = r"F:\Dest\Test.py"
  
# create duplicate of the file at the destination,
# with the name mentioned
# at the end of the destination path
# if a file with the same name doesn't already
# exist at the destination,
# a new file with the name mentioned is created
path = shutil.copyfile(src,dest)
  
print("After copying file:")
print(os.listdir(D))
  
# print path of the newly created duplicate file
print("Path of the duplicate file is:")
print(path)

Producción:

Before copying the file:
['in.txt', 'out.txt']
After copying the file:
['in.txt', 'out.txt', 'Test.py']
Path of the duplicate file is:
F:\Dest\Test.py

Método 2 : Usar shutil.copy()

También copia el contenido del archivo de origen en el archivo o directorio de destino. A diferencia de copyfile(), shutil.copy() también copia los permisos del archivo fuente.

Sintaxis: shutil.copy(src, dst, *, follow_symlinks=True)

Parámetros:-

  • src – src aquí está la ruta completa del archivo fuente.
  • dest: dest es la ruta completa del archivo o directorio de destino. La ubicación de destino debe ser escribible.
  • follow_symlinks (opcional): el valor predeterminado de este parámetro es True. Si se establece en False y src es un enlace simbólico, se creará un nuevo enlace simbólico en lugar de copiar el archivo al que apunta src.

Tipo de retorno: – Devuelve la ruta del archivo duplicado recién creado.

Código:

Python3

# Python program to create the duplicate of
# an already existing file
import os, stat
D = r"F:\Dest"
  
# importing the shutil module
import shutil
  
print("Before copying file:")
print(os.listdir(D))
  
# src contains the path of the source file
src=r"C:\Users\YASH\OneDrive\Desktop\small\Src\Test.py"
  
# changing the permission(Read, write, and execute 
# by others)
# of the source file
os.chmod(src, stat.S_IRWXO)
  
# dest contains the path of the destination file
dest = r"F:\Dest\Test.py"
  
# create duplicate of the file at the
# destination, with the name mentioned
# at the end of the destination path
# if a file with the same name doesn't
# already exist at the destination,
# a new file with the name mentioned is created
path = shutil.copy(src,dest)
  
# checking the permission of
# the duplicate file to see if the
# permissions have also been copied
# check the permission(Read, write, and execute 
# by others)
# of the duplicate file
print(os.access(path, stat.S_IRWXO))
  
print("After copying file:")
print(os.listdir(D))
  
# print path of the newly created duplicate file
print("Path of the duplicate file is:")
print(path)

Producción:

Before copying the file:
['in.txt', 'out.txt']
After copying the file:
False
['in.txt', 'out.txt', 'Test.py']
Path of the duplicate file is:
F:\Dest\Test.py

Método 3 : Usar shutil.copy2()

Es casi similar a shutil.copy(), excepto que copy2() también intenta preservar los metadatos. Cuando follow_symlinks se establece en False y src es un enlace simbólico, copy2() intenta copiar todos los metadatos del enlace simbólico src al enlace simbólico dst recién creado.

Sintaxis: shutil.copy2(src, dst, *, follow_symlinks=True)

Parámetros:

  • src – src aquí está la ruta completa del archivo fuente.
  • dest : dest es la ruta completa del archivo o directorio de destino. La ubicación de destino debe ser escribible.
  • follow_symlinks (opcional): el valor predeterminado de este parámetro es True. Si se establece en False y src es un enlace simbólico, se creará un nuevo enlace simbólico en lugar de copiar el archivo al que apunta src.

Tipo de retorno : – Devuelve la ruta del archivo duplicado recién creado.

Código:

Python3

# Python program to create the duplicate of an already 
# existing file
import os
D = r"F:\Dest"
# importing the shutil module
import shutil
  
print("Before copying file:")
print(os.listdir(D))
  
# src contains the path of the source file
src=r"C:\Users\YASH\OneDrive\Desktop\small\Src\Test.py"
  
# dest contains the path of the destination file
dest = r"F:\Dest\Test.py"
  
# using copy2()
path=shutil.copy2(src,dest)
  
# A new duplicate file is added at
# the destination with name we mention
# on the path
print("After copying file:")
print(os.listdir(D))
  
# print path of the newly created duplicate file
print("Path of the duplicate file is:")
print(path)

Producción:

Before copying the file:
['in.txt', 'out.txt']
After copying the file:
['in.txt', 'out.txt', 'Test.py']
Path of the duplicate file is:
F:\Dest\Test.py

Publicación traducida automáticamente

Artículo escrito por yash_zz 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 *