Copiar archivo en Python: métodoshutil.copy(), métodoshutil.copystat()

⚡ Resumen inteligente

Python Copia archivos con el módulo shutil. shutil.copy() duplica el contenido de un archivo, mientras que shutil.copystat() también copia los permisos, la fecha de modificación y los metadatos. Aquí aprenderás ambos métodos con un ejemplo paso a paso.

  • 📋 shutil.copy(): shutil.copy(src, dst) copia el contenido de un archivo a un nuevo destino.
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) también copia los permisos, la hora y los metadatos.
  • 🤖 Ayuda de IA: Las herramientas de IA como Copilot generan código de copia de Shutil al instante.

Copiar archivo en Python

Python Copiar métodos de archivo

Python proporciona funciones integradas para copiar archivos fácilmente utilizando el OperaUtilidades del Shell del sistema.

El siguiente comando se utiliza para copiar archivos

shutil.copy(src,dst)

El siguiente comando se utiliza para copiar un archivo con información de metadatos

shutil.copystat(src,dst)

Cómo copiar un archivo en Python

Estos son los pasos para copiar el archivo en Python usando el método Shutil copy():

Paso 1) Capture la ruta original en el directorio actual
Antes de copiar un archivo, necesitamos obtener la ruta al archivo original en el directorio actual. En el código -

  1. declarando variable
  2. Aplicar la función de división en la variable

Copiar un archivo en Python

Code Explicación

  • Primero vamos a comprobar que nuestro archivo “guru99.txt” existe o no. Como hemos creado el archivo guru99.txt anteriormente, sabemos que existe y continuaremos con el código.
  • Guardamos la ruta del archivo en la variable “src”si su archivo existe
  • Una vez que tengamos la ruta, vamos a separar la ruta y el nombre del archivo.
  • Para eso vamos a usar la división. path.split función en la variable fuente
  • Code cuando se ejecuta imprime “nombre de archivo" y "ruta de archivo"por separado

Paso 2) Cree una copia de nuestro archivo existente usando el módulo Shutil
Usamos Shutil Module para crear una copia del archivo existente. Aquí solíamos crear una copia de nuestro archivo existente "guru99.txt".

Copiar un archivo en Python

Code Explicación

  • Tome el nombre de archivo original “guru99.txt” y agregue las letras .bak al final “guru99.txt.bak”. Este nombre con extensión .bak será nuestra copia duplicada.
  • Y luego usaremos la función de copia de la utilidad para copiar desde el origen al destino.
  • Cuando ejecute el código, verá que se crea un archivo duplicado con la extensión .bak en el lado derecho del panel.

Paso 3) Copie los metadatos asociados con el archivo, el permiso del archivo y otra información.
La función de copia solo copia el contenido del archivo pero ninguna otra información. Copiar metadatos asociado con el archivo, permiso del archivo y otra información que debe usar "copiastat" función. Antes de ejecutar este código, debemos eliminar nuestro archivo de copia "guru99.text.bak".

Copiar un archivo en Python

Una vez que haya eliminado el archivo y ejecute el programa, creará una copia de su archivo .txt, pero esta vez con toda la información como permiso de archivo, hora de modificación e información de metadatos. Puede ir al shell de su sistema operativo para verificar la información.

Copiar un archivo en Python

Aqui esta el codigo

import os
import shutil
from os import path

def main():
    # make a duplicate of an existing file
	if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

Paso 4) Obtener la información
Puede obtener la información sobre el archivo de texto modificado por última vez.

Copiar un archivo en Python

  • Code Línea n.° 15: Indica el día, fecha, mes, año y hora en que se modificó por última vez el archivo .txt (guru99). Usamos el módulo path para obtener los detalles de la hora de modificación del archivo y luego vamos a usar el clases de tiempo c función de tiempo para convertirlo en una hora legible. Entonces, cuando ejecutamos el código, podemos ver que el archivo guru99.txt se modificó por última vez el Lun, 8 de eneroth a las 13:35 2018.
  • Code Línea n.° 17: Hace lo mismo, proporcionando información sobre la modificación del archivo, pero tiene un formato diferente para representarla. Aquí usamos Obtener la función de hora de modificación (ruta.getmtime(“guru99.txt”)). Ahora, en lugar de usar la función c time, usaremos Desde la función de marca de tiempo y voy a construir un objeto de fecha y hora. En la salida, puede ver que los detalles de la hora de modificación del archivo se imprimen en diferentes formatos. 2018-01-08, 13:35:51.334072

Aqui esta el codigo

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

Preguntas Frecuentes

Importa shutil y luego llama a shutil.copy(src, dst) para copiar el contenido del archivo. Usa shutil.copystat() para copiar también sus metadatos.

shutil.copystat(src, dst) copia los permisos, la fecha de modificación y los metadatos de un archivo al destino, pero no su contenido.

shutil.copy() copia el contenido y los permisos, mientras que shutil.copy2() también conserva metadatos como las marcas de tiempo. Utilice copy2() para mantener la hora de modificación.

shutil.copy() acepta un directorio de destino y copia los permisos; shutil.copyfile() necesita una ruta de archivo completa y copia solo el contenido.

Utilice shutil.copytree(src, dst) para copiar recursivamente un directorio completo y su contenido. La carpeta de destino no debe existir previamente.

Los asistentes de IA como GitHub Copilot autocompletan las llamadas a shutil.copy() y copystat() y sugieren copy2() o copytree() para cada caso.

Sí. Las herramientas con inteligencia artificial generan rutinas de copia de seguridad, seleccionan el método de copia de seguridad adecuado y añaden comprobaciones de existencia antes de copiar archivos o carpetas.

Utilice os.path.getmtime(path) para obtener la marca de tiempo y luego conviértala con time.ctime() o datetime.fromtimestamp() para obtener una fecha legible.

Resumir este post con: