Pregunta ¿Cómo copio un archivo en Python?


¿Cómo copio un archivo en Python? No pude encontrar nada debajo os.


1457
2017-09-23 19:23


origen


Respuestas:


shutil tiene muchos métodos que puedes usar Uno de los cuales es:

from shutil import copyfile

copyfile(src, dst)

Copie el contenido del archivo llamado src a un archivo llamado dst. La ubicación de destino debe poder escribirse; de lo contrario, una IOError se levantará una excepción. Si dst ya existe, será reemplazado. Los archivos especiales como los dispositivos de caracteres o bloques y las tuberías no se pueden copiar con esta función. src y dst son nombres de ruta dados como cadenas.


1770
2017-09-23 19:25



-----------------------------------------------------------------------------------
| Function          |Copies Metadata|Copies Permissions|Can Use Buffer|Dest Dir OK
-----------------------------------------------------------------------------------
| shutil.copy       |      No       |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfile   |      No       |        No        |      No      |    No
-----------------------------------------------------------------------------------
| shutil.copy2      |      Yes      |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfileobj|      No       |        No        |      Yes     |    No
-----------------------------------------------------------------------------------

549
2018-05-20 20:01



copy2(src,dst) a menudo es más útil que copyfile(src,dst) porque:

  • Permite dst ser un directorio (en lugar del nombre de archivo de destino completo), en cuyo caso basename de src se usa para crear el nuevo archivo;
  • conserva la modificación original y la información de acceso (mtime y atime) en los metadatos del archivo (sin embargo, esto viene con una ligera sobrecarga).

Aquí hay un pequeño ejemplo:

import shutil
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # complete target filename given
shutil.copy2('/src/file.ext', '/dst/dir') # target filename is /dst/dir/file.ext

547
2017-09-23 19:29



Copiar un archivo es una operación relativamente sencilla como se muestra en los ejemplos a continuación, pero en su lugar debe usar el módulo shutil stdlib para eso.

def copyfileobj_example(source, dest, buffer_size=1024*1024):
    """      
    Copy a file from source to dest. source and dest
    must be file-like objects, i.e. any object with a read or
    write method, like for example StringIO.
    """
    while True:
        copy_buffer = source.read(buffer_size)
        if not copy_buffer:
            break
        dest.write(copy_buffer)

Si quiere copiar por nombre de archivo puede hacer algo como esto:

def copyfile_example(source, dest):
    # Beware, this example does not handle any edge cases!
    with open(source, 'rb') as src, open(dest, 'wb') as dst:
        copyfileobj_example(src, dst)

73
2017-09-24 07:21



Utilizar el módulo shutil.

copyfile(src, dst)

Copie los contenidos del archivo llamado src a un archivo llamado dst. La ubicación de destino debe poder escribirse; de lo contrario, se generará una excepción IOError. Si dst ya existe, será reemplazado. Los archivos especiales como los dispositivos de caracteres o bloques y las tuberías no se pueden copiar con esta función. src y dst son nombres de ruta dados como cadenas.

Echa un vistazo a filesys para todas las funciones de manejo de archivos y directorios disponibles en los módulos estándar de Python.


47
2017-09-23 19:27



Puede usar una de las funciones de copia desde shutil paquete:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
La función conserva los soportes acepta otras copias
                      directorio de permisos dest. file obj metadata
-------------------------------------------------- ----------------------------
shutil.copy                                            ☐ ☐
shutil.copy2                                           ☐
shutil.copyfile          ☐ ☐ ☐ ☐
shutil.copyfileobj       ☐ ☐ ☐
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ejemplo:

import shutil
shutil.copy('/etc/hostname', '/var/tmp/testhostname')

40
2017-07-09 11:50



Ejemplo de copia de directorio y archivo: de Tim Golden's Python Stuff:

http://timgolden.me.uk/python/win32_how_do_i/copy-a-file.html

import os
import shutil
import tempfile

filename1 = tempfile.mktemp (".txt")
open (filename1, "w").close ()
filename2 = filename1 + ".copy"
print filename1, "=>", filename2

shutil.copy (filename1, filename2)

if os.path.isfile (filename2): print "Success"

dirname1 = tempfile.mktemp (".dir")
os.mkdir (dirname1)
dirname2 = dirname1 + ".copy"
print dirname1, "=>", dirname2

shutil.copytree (dirname1, dirname2)

if os.path.isdir (dirname2): print "Success"

36
2018-03-15 10:11



Mire el módulo shutil. Contiene funcion copiar archivo(src, dst)


21
2017-09-23 19:27