Articles

Copiar un archivo en Python

En nuestros tutoriales anteriores, aprendimos algunas operaciones de archivos de Python, como leer, escribir y eliminar. Aprendamos a copiar un archivo en Python en este tutorial.

Podemos copiar un archivo en Python utilizando diferentes métodos bajo los módulos mencionados a continuación,

  • shutil module
  • os module
  • subprocess module

En este tutorial, vamos a aprender a usar los diferentes métodos proporcionados por los módulos anteriores para copiar un archivo en Python.

1. Módulo shutil para Copiar un archivo en Python

El módulo shutil proporciona algunos métodos fáciles de usar que podemos eliminar y copiar un archivo en Python. Veamos los diferentes métodos definidos en este módulo que se usan específicamente para copiar.

1. copyfileobj ()

El método copyfileobj() copia el contenido del archivo de origen al archivo de destino utilizando sus respectivos objetos de archivo. Echemos un vistazo al siguiente código,

import shutilsrc_file_obj=open('src.txt', 'rb')targ_file_obj= open('targ.txt' , 'wb')shutil.copyfileobj( src_file_obj , targ_file_obj )

Nota: los objetos de archivo deben apuntar a las posiciones 0 (posición de inicio) para los archivos de origen y destino respectivos, para copiar todo el contenido.

2. copyfile ()

El método copyfile() copia el contenido del archivo de origen al archivo de destino utilizando las rutas de archivo. Devuelve la ruta del archivo de destino. La ruta de acceso del archivo de destino debe poder escribirse o de lo contrario se produciría una excepción OSError.

import shutilshutil.copyfile( 'src.txt' , 'targ.txt' )

Se debe tener en cuenta que el método solo permite el uso de rutas de archivo y no de directorios.

3. copy ()

Este método copia el archivo de origen al archivo de destino o al directorio de destino. A diferencia de copyfile() , el método copy() permite el uso del directorio de destino como argumento y también copia los permisos de archivo. copy() devuelve la ruta al archivo de destino después de copiar el contenido.

import shutilshutil.copy('/Users/test/file.txt', '/Users/target/')

Un archivo con nombre de archivo’.txt ‘se crea en el destino de destino con todo el contenido y los permisos copiados de’ /Users/test / file.txt.

4. copy2 ()

El método copy2() se utiliza exactamente de la misma manera que el método copy(). También funcionan de la misma manera, excepto por el hecho de que copy2() también copia los metadatos del archivo de origen.

import shutilshutil.copy2('/Users/test/file.txt', '/Users/target/')

2. os Módulo para Copiar un Archivo en Python

1. popen ()

El método popen() crea una tubería al comando cmd. El método devuelve un objeto file conectado a la tubería cmd. Echa un vistazo a el código de abajo,

#for Windowsimport osos.popen('copy src.txt targ.txt' )
#for Linuximport osos.popen('cp src.txt targ.txt' )

Con este método, no sólo podemos copiar archivos, sino también de ejecutar otros comandos regulares.

2. system ()

El método system() llama y ejecuta directamente un argumento de comando en una subcapa. Su valor de retorno depende del sistema operativo que ejecute el programa. Para Linux, es el estado de salida, mientras que para Windows es el valor devuelto por el shell del sistema.

#for Linuximport osos.system(' cp src.txt targ.txt' )
#for Windowsimport osos.system(' copy src.txt targ.txt' )

3. módulo de subproceso para Copiar un archivo en Python

1. call ()

El método call() similar a os.system() llama o ejecuta directamente el comando pasado como argumento a la función.

# In Linuximport subprocesssubprocess.call('cp source.txt target.txt', shell=True)