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