El módulo Shutil ofrece una operación de alto nivel en un archivo como una copia, creación y operación remota en el archivo. 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. En este artículo, aprenderemos este módulo.
Copiar archivos a otro directorio
El método shutil.copy() en Python se usa para copiar el contenido del archivo fuente 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. Además, 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(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 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.
Tipo de devolución: este método devuelve una string que representa la ruta del archivo recién creado.
Ejemplo 1:
Python3
# Python program to explain shutil.copy() method # importing shutil module import shutil source = "path/main.py" destination ="path/main2.py" # Copy the content of # source to destination dest = shutil.copy(source, destination) # Print path of newly # created file print("Destination path:", dest)
Producción:
Destination path: path/main2.py
Ejemplo 2: Si el destino es un directorio.
Python3
# importing shutil module import shutil # Source path source = "path/main.py" # Destination path destination = "path/gfg/" # Copy the content of # source to destination dest = shutil.copy(source, destination) # Print path of newly # created file print("Destination path:", dest)
Producción:
path/gfg/main.py
Copiar los metadatos junto con el archivo
El método shutil.copy2() en Python se usa para copiar el contenido del archivo fuente al archivo o directorio de destino. Este método es idéntico al método shutil.copy() pero también intenta conservar los metadatos del archivo.
Sintaxis: shutil.copy2(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 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, entonces intenta copiar todos los metadatos del enlace simbólico de origen al enlace simbólico de destino recién creado. Esta funcionalidad depende de la plataforma.
Tipo de devolución: este método devuelve una string que representa la ruta del archivo recién creado.
Python3
# Python program to explain shutil.copy2() method # importing os module import os # importing shutil module import shutil # path path = 'csv/' # List files and directories # in '/home/User/Documents' print("Before copying file:") print(os.listdir(path)) # Source path source = "csv/main.py" # Print the metadeta # of source file metadata = os.stat(source) print("Metadata:", metadata, "\n") # Destination path destination = "csv/gfg/check.txt" # Copy the content of # source to destination dest = shutil.copy2(source, destination) # List files and directories # in "/home / User / Documents" print("After copying file:") print(os.listdir(path)) # Print the metadata # of the destination file matadata = os.stat(destination) print("Metadata:", metadata) # Print path of newly # created file print("Destination path:", dest)
Producción:
Antes de copiar el archivo:
[‘archivo (2)’, ‘c.jpg’, ‘c.PNG’, ‘Capturar.PNG’, ‘cc.jpg’, ‘check.zip’, ‘cv.csv’, ‘d.png’, ‘¡Hecho! Generador de términos y condiciones: ¡el generador de términos y condiciones gratuito más rápido! , ‘new_gfg.png’, ‘r.gif’, ‘Resultado -_ ¡Los términos y condiciones están listos!.pdf’, ‘rockyou.txt’, ‘sample.txt’]
Metadatos: os.stat_result(st_mode=33206, st_ino=2251799814202896, st_dev=1689971230, st_nlink=1, st_uid=0, st_gid=0, st_size=1916, st_atime=1612953710, st_mtime=1612,29132c)
Después de copiar el archivo:
[‘archivo (2)’, ‘c.jpg’, ‘c.PNG’, ‘Capturar.PNG’, ‘cc.jpg’, ‘check.zip’, ‘cv.csv’, ‘d.png’, ‘¡Hecho! Generador de términos y condiciones: ¡el generador de términos y condiciones gratuito más rápido! , ‘new_gfg.png’, ‘r.gif’, ‘Resultado -_ ¡Los términos y condiciones están listos!.pdf’, ‘rockyou.txt’, ‘sample.txt’]
Metadatos: os.stat_result(st_mode=33206, st_ino=2251799814202896, st_dev=1689971230, st_nlink=1, st_uid=0, st_gid=0, st_size=1916, st_atime=1612953710, st_mtime=1612,29132c)
Ruta de destino: csv/gfg/check.txt
Ejemplo 2: Si el destino es un directorio
Python3
# Python program to explain shutil.copy2() method # importing os module import os # importing shutil module import shutil # Source path source = "csv/main.py" # Destination path destination = "csv/gfg/" # Copy the content of # source to destination dest = shutil.copy2(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)
Producción:
Después de copiar el archivo:
[‘cc.jpg’, ‘check.txt’, ‘log_transformed.jpg’, ‘main.py’, ‘main2.py’]
Ruta de destino: csv/gfg/main.py
Copiar el contenido de un archivo a otro
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: 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.
Tipo de devolución: este método devuelve una string que representa la ruta del archivo recién creado.
Python3
# Python program to explain shutil.copyfile() method # importing shutil module import shutil # Source path source = "csv/main.py" # Destination path destination = "csv/gfg/main_2.py" dest = shutil.copyfile(source, destination) print("Destination path:", dest)
Producción:
Destination path: csv/gfg/main_2.py
Replicando Directorio completo
El método shutil.copytree() copia recursivamente un árbol de directorios completo enraizado en el origen (src) al directorio de destino. El directorio de destino, denominado por (dst), no debe existir todavía. Se creará durante la copia.
Sintaxis: shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, ignore_dangling_symlinks = False)
Parámetros:
src: una string que representa la ruta del directorio de origen.
dest: una string que representa la ruta del destino.
symlinks (opcional) : Este parámetro acepta Verdadero o Falso, dependiendo de cuál se copiarán los metadatos de los enlaces originales o enlaces enlazados al nuevo árbol.
ignore (opcional): si se da ignore, debe ser un invocable que recibirá como argumentos el directorio que está visitando copytree() y una lista de su contenido, tal como lo devuelve os.listdir().
copy_function (opcional): el valor predeterminado de este parámetro es copy2. Podemos usar otra función de copia como copy() para este parámetro.
ignore_dangling_symlinks (opcional) :Este valor de parámetro, cuando se establece en True, se usa para silenciar la excepción generada si el archivo al que apunta el enlace simbólico no existe.Valor devuelto: este método devuelve una string que representa la ruta del directorio recién creado.
Python3
# Python program to explain shutil.copytree() method # importing os module import os # importing shutil module import shutil # path path = 'C:/Users/ksaty/csv/gfg' print("Before copying file:") print(os.listdir(path)) # Source path src = 'C:/Users/ksaty/csv/gfg' # Destination path dest = 'C:/Users/ksaty/csv/gfg/dest' # Copy the content of # source to destination destination = shutil.copytree(src, dest) print("After copying file:") print(os.listdir(path)) # Print path of newly # created file print("Destination path:", destination)
Producción:
Antes de copiar el archivo:
[‘cc.jpg’, ‘check.txt’, ‘log_transformed.jpg’, ‘main.py’, ‘main2.py’, ‘main_2.py’]
Después de copiar el archivo:
[‘cc.jpg’, ‘check.txt’, ‘destino’, ‘log_transformed.jpg’, ‘main.py’, ‘main2.py’, ‘main_2.py’]
Ruta de destino: C:/Users/ksaty/csv/gfg/dest
Eliminación de un directorio
shutil.rmtree() se usa para eliminar un árbol de directorios completo, la ruta debe apuntar a un directorio (pero no un enlace simbólico a un directorio).
Sintaxis: shutil.rmtree(ruta, ignore_errors=False, onerror=Ninguno)
Parámetros:
ruta: un objeto similar a una ruta que representa una ruta de archivo. Un objeto similar a una ruta es una string o un objeto de bytes que representa una ruta.
ignore_errors: si ignore_errors es verdadero, se ignorarán los errores resultantes de eliminaciones fallidas.
oneerror: si ignore_errors es falso o se omite, dichos errores se manejan llamando a un controlador especificado por onerror.
Python3
# Python program to demonstrate # shutil.rmtree() import shutil import os # location location = "csv/gfg/" # directory dir = "dest" # path path = os.path.join(location, dir) # removing directory shutil.rmtree(path)
Encontrar archivos
El método shutil. Which() indica la ruta a una aplicación ejecutable que se ejecutaría si se invocara el cmd dado . Este método se puede usar para encontrar un archivo en una computadora que está presente en la RUTA.
Sintaxis: shutil.which(cmd, modo = os.F_OK | os.X_OK, ruta = Ninguno)
Parámetros:
cmd: Una string que representa el archivo.
modo: este parámetro especifica el modo por el cual se debe ejecutar el método. os.F_OK comprueba la existencia de la ruta y os.X_OK comprueba si la ruta se puede ejecutar o podemos decir que el modo determina si el archivo existe y es ejecutable.
ruta: este parámetro especifica la ruta que se utilizará; si no se especifica ninguna ruta, se utilizan los resultados de os.environ()
Valor de retorno: este método devuelve la ruta a una aplicación ejecutable
Python3
# importing shutil module import shutil # file search cmd = 'anaconda' # Using shutil.which() method locate = shutil.which(cmd) # Print result print(locate)
Producción:
D:\Installation_bulk\Scripts\anaconda.EXE
Publicación traducida automáticamente
Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA