Python3
# Python program to explain shutil.copy() 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 try: shutil.copy(source, destination) print("File copied successfully.") # If source and destination are same except shutil.SameFileError: print("Source and destination represents the same file.") # If there is any permission issue except PermissionError: print("Permission denied.") # For other errors except: print("Error occurred while copying file.")
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.
El método shutil.copy() en Python se usa para copiar el contenido del archivo de origen al archivo o directorio de destino . También conserva el modo de permiso del archivo, pero no se conservan otros metadatos del archivo, como los tiempos de creación y modificación del archivo.
El origen debe representar un archivo, pero el destino puede ser un archivo o un directorio. Si el destino es un directorio, el archivo se copiará en el destino utilizando el nombre de archivo base del origen. También,el destino debe ser escribible. Si el destino es un archivo y ya existe, se reemplazará con el archivo de origen ; de lo contrario, se creará un nuevo archivo.
Sintaxis: shutil.copy(source, destination, *, follow_symlinks = True)
Parámetro:
source : Una string que representa la ruta del archivo fuente.
destino : una string que representa la ruta del archivo o directorio de destino.
follow_symlinks (opcional): el valor predeterminado de este parámetro es True. Si es Falso y el origen representa un enlace simbólico, el destino se creará como un enlace simbólico.
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.
Código n.º 1: Uso del método shutil.copy() para copiar el archivo del origen al destino
Python3
# Python program to explain shutil.copy() 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" # Print file permission # of the source perm = os.stat(source).st_mode print("File Permission mode:", perm, "\n") # Destination path destination = "/home/User/Documents/file(copy).txt" # Copy the content of # source to destination dest = shutil.copy(source, destination) # List files and directories # in "/home / User / Documents" print("After copying file:") print(os.listdir(path)) # Print file permission # of the destination perm = os.stat(destination).st_mode print("File Permission mode:", perm) # Print path of newly # created file print("Destination path:", dest)
Before copying file: ['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'copy.cpp'] File permission mode: 33188 After copying file: ['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'file(copy).txt', 'copy.cpp'] File permission mode: 33188 Destination path: /home/User/Documents/file(copy).txt
Código #2: Si el destino es un directorio
Python3
# Python program to explain shutil.copy() method # importing os module import os # importing shutil module import shutil # Source path source = "/home/User/Documents/file.txt" # Destination path destination = "/home/User/Desktop/" # Copy the content of # source to destination dest = shutil.copy(source, destination) # List files and directories # in "/home / User / Desktop" print("After copying file:") print(os.listdir(destination)) # Print path of newly # created file print("Destination path:", dest)
After copying file: ['input.txt', 'GeeksForGeeks', 'output.txt', 'file.txt', 'web.py', 'tree.cpp'] Destination path: /home/User/Desktop/file.txt
Código #3: Posibles errores al usar el método shutil.copy()
Python3
# Python program to explain shutil.copy() method # importing shutil module import shutil # If the source and destination # represents the same file # 'SameFileError' exception # will be raised # If the destination is # not writable # 'PermissionError' exception # will be raised # Source path source = "/home/User/Documents/file.txt" # Destination path destination = "/home/User/Documents/file.txt" # Copy the content of # source to destination shutil.copy(source, destination)
Traceback (most recent call last): File "try.py", line 26, in dest = shutil.copy(source, destination) File "/usr/lib/python3.6/shutil.py", line 241, in copy copyfile(src, dst, follow_symlinks=follow_symlinks) 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/Desktop/file.txt' and '/home/User/Desktop/file.txt' are the same file
Código #4: Manejo de errores al usar el método shutil.copy()
Python3
# Python program to explain shutil.copy() 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 try: shutil.copy(source, destination) print("File copied successfully.") # If source and destination are same except shutil.SameFileError: print("Source and destination represents the same file.") # If there is any permission issue except PermissionError: print("Permission denied.") # For other errors except: print("Error occurred while copying file.")
Source and destination represents the same file.
Referencia: https://docs.python.org/3/library/shutil.html