El módulo Shutil en Python proporciona muchas funciones de operaciones de alto nivel en archivos y colecciones de archivos. Viene bajo los módulos de utilidad estándar de Python. Este módulo ayuda a automatizar el proceso de copia y eliminación de archivos y directorios.
¿Qué es el método shutil.copyfile() en Python?
El método shutil.copyfile() en Python se usa para copiar el contenido del archivo de origen al archivo de destino . Los metadatos del archivo no se copian. El origen y el destino deben representar un archivo y el destino debe ser escribible. Si el destino ya existe, se reemplazará con el archivo de origen ; de lo contrario, se creará un nuevo archivo.
Si el origen y el destino representan el mismo archivo, se generará la excepción SameFileError .
Sintaxis del método shutil.copyfile() en Python
Sintaxis: shutil.copyfile(origen, destino, *, follow_symlinks = True)
Parámetro:
- fuente : una string que representa la ruta del archivo fuente.
- destino : una string que representa la ruta del archivo de destino.
- follow_symlinks (opcional): el valor predeterminado de este parámetro es True. Si False y la fuente representa un enlace simbólico, se creará un nuevo enlace simbólico en lugar de copiar el archivo.
Nota: El ‘*’ en la lista de parámetros indica que todos los siguientes parámetros (aquí, en nuestro caso, ‘follow_symlinks’) son parámetros de solo palabras clave y se pueden proporcionar usando su nombre, no como parámetro posicional.
Tipo de devolución: este método devuelve una string que representa la ruta del archivo recién creado.
Ejemplo 1: uso del método shutil.copyfile() para copiar un archivo del origen al destino
Python3
# Python program to explain shutil.copyfile() method # importing os module import os # importing shutil module import shutil # path path = '/home/User/Documents' # List files and directories # in '/home/User/Documents' print("Before copying file:") print(os.listdir(path)) # Source path source = "/home/User/Documents/file.txt" # Destination path destination = "/home/User/Documents/file(copy).txt" # Copy the content of # source to destination dest = shutil.copyfile(source, destination) # List files and directories # in "/home / User / Documents" print("After copying file:") print(os.listdir(path)) # Print path of newly # created file print("Destination path:", dest)
Producción:
Before copying file: ['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'copy.cpp'] After copying file: ['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'file(copy).txt', 'copy.cpp'] Destination path: /home/User/Documents/file(copy).txt
Ejemplo 2: Posibles errores al usar el método shutil.copyfile()
Si el origen y el destino representan el mismo archivo, se generará la excepción ‘SameFileError’ Si el destino es un directorio, se generará la excepción ‘IsADirectoryError’ Si el destino no se puede escribir, se generará la excepción ‘PermissionError’
Python3
# Python program to explain shutil.copyfile() method # importing shutil module import shutil # Source path source = "/home/User/Documents/file.txt" # Destination path destination = "/home/User/Documents/file.txt" # Copy the content of # source to destination shutil.copyfile(source, destination)
Producción:
Traceback (most recent call last): File "copy.py", line 31, in shutil.copyfile(source, destination) File "/usr/lib/python3.6/shutil.py", line 104, in copyfile raise SameFileError("{!r} and {!r} are the same file".format(src, dst)) shutil.SameFileError: '/home/User/Documents/file.txt' and '/home/User/Documents/file.txt' are the same file
Ruta de destino: /home/User/Documents/file(copy).txt
Ejemplo 3: manejo de errores al usar el método shutil.copyfile()
Python3
# Python program to explain shutil.copyfile() method # importing shutil module import shutil # Source path source = "/home/User/Documents/file.txt" # Destination path destination = "/home/User/Documents" # Copy the content of # source to destination try: shutil.copyfile(source, destination) print("File copied successfully.") # If source and destination are same except shutil.SameFileError: print("Source and destination represents the same file.") # If destination is a directory. except IsADirectoryError: print("Destination is a directory.") # If there is any permission issue except PermissionError: print("Permission denied.") # For other errors except: print("Error occurred while copying file.")
Producción:
Destination is a directory.