Copia de archivos en Python 2.7

Bien, tengo otra pregunta. Implementé la comprobación de errores pero por alguna razón todavía no está funcionando. Sigo recibiendo un error de Python en lugar del error que acabo de escribir en el programa.

Traceback (most recent call last):
  File "E:/python/copyfile.py", line 31, in 
    copyFile()
  File "E:/python/copyfile.py", line 8, in copyFile
    file1 = open(source,"r")
IOError: [Errno 2] No such file or directory: 'C:/Users/Public/asdf.txt'
0
agregado el autor Yariv, fuente
Trazabilidad (última llamada más reciente): Archivo "", línea 1, en copyFile() Archivo "E: /python/copyfile.py", línea 6, en copyFile file1 = open (fuente, "r") IOError: [Errno 2] No existe dicho archivo o directorio: '/Users/Public/asdf.txt' Este es el error que recibo.
agregado el autor Aegg, fuente
Bien, lo descubrí ... gracias a ustedes, chicos :) El problema fue que tuve mi intento y excepto las declaraciones en los lugares equivocados. Con un movimiento rápido, el problema se resolvió rápidamente. Gracias chicos de nuevo.
agregado el autor Aegg, fuente
No modifique su pregunta, ahora que ha recibido respuestas. Las preguntas no son solo para el beneficio del solicitante, sino para muchos visitantes en el futuro.
agregado el autor Brad Larson, fuente
Solo FYI, hay shutil.copyfile (src, dst) .
agregado el autor squiguy, fuente
Entonces, ¿qué hace tu programa cuando pasas un nombre de archivo inválido? Eso debería darle una idea de qué buscar mientras intenta leer/escribir archivos. ¿Sabes cómo implementar el manejo de excepciones? Si no es así, haz un rápido "Manejo de excepciones de python" de Google y ve lo que se te ocurre. Buena suerte :)
agregado el autor bedwyr, fuente

2 Respuestas

verifique el módulo shutil en la biblioteca estándar:

shutil.copyfile(src, dst)

http://docs.python.org/2/library/shutil.html # shutil.copyfile

0
agregado
No tengo permitido usar ninguna función incorporada. de todos modos, lo tengo actualizado ... pero aparentemente el cheque aún no está del todo bien ...
agregado el autor Aegg, fuente

Prefiero pedirte que escribas el tuyo:

import os
import hashlib

def md5ChkSum(_file):  # Calculates MD5 CheckSum
    with open(_file, 'rb') as fp:
        hash_obj = hashlib.md5()

        line = fp.readline()
        while line:
            hash_obj.update(line)
            line = fp.readline()
        return hash_obj.hexdigest()

def copier(_src, _dst):
    if not os.path.exists(_src):
        return False

    _src_fp = open(_src, "r")
    _dst_fp = open(_dst, "w")

    line = _src_fp.readline()
    while line:
        _dst_fp.write(line)
        line = _src_fp.readline()
    _src_fp.close()
    _dst_fp.close()

    if md5ChkSum(_src) == md5ChkSum(_dst):
        return "Copy: SUCCESSFUL"
    return "Copy: FAILED"

res = copier(r"/home/cnsiva/6.jpg", r"/home/cnsiva/6_copied.jpg")
if not res:
    print "FILE Does not Exists !!!"
else: print res

SALIDA:

Copy: SUCCESSFUL
0
agregado
@khachik, ¿Tiene algún problema, aquí no nos apegamos a los estilos? Compruebe la funcionalidad!
agregado el autor Siva Cn, fuente
@khachik, la Pregunta no es usar los métodos incorporados
agregado el autor Siva Cn, fuente
Verifique el comentario en la otra respuesta
agregado el autor Siva Cn, fuente
copiadora no es un buen nombre para una función.
agregado el autor khachik, fuente
para la funcionalidad hay shutil, no hay necesidad de reinventarlo.
agregado el autor khachik, fuente
shutil no está incorporado y tampoco veo nada sobre complementos en la pregunta.
agregado el autor khachik, fuente