2013-12-16 5 views
1

Хорошо, у меня есть другой вопрос. Я выполнил проверку ошибок, но по какой-то причине он все еще не работает. Я все еще получаю ошибку python вместо ошибки, которую я только что написал в программе.Копирование файлов в python 2.7

Traceback (most recent call last): 
    File "E:/python/copyfile.py", line 31, in <module> 
    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' 
+1

Просто FYI есть [shutil.copyfile (src, dst)] (http://docs.python.org/2/library/shutil.html#shutil.copyfile). – squiguy

+0

Итак, что делает ваша программа, когда вы передаете недопустимое имя файла? Это должно дать вам представление о том, что нужно искать при попытке чтения/записи файлов. Вы знаете, как реализовать обработку исключений? Если нет, сделайте быстрый Google для «обработки исключений python» и посмотрите, что вы можете придумать. Удачи :) – bedwyr

+0

Возможная Дубликат http://stackoverflow.com/q/8380006/1579844 – Yariv

ответ

3

ЗАКАНЧИВАТЬ shutil модуль в стандартной библиотеке:

shutil.copyfile(src, dst) 

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

+0

Мне не разрешено использовать какие-либо встроенные функции. в любом случае, я получил его обновление ... но, по-видимому, проверка еще не совсем правильная .. – Aegg

1

Я предпочел бы просить вас, чтобы написать свой собственный:

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 

ВЫВОД:

Copy: SUCCESSFUL 
+0

'copier' - нехорошее имя для функции. – khachik

+1

@khachik, Это делает какие-либо проблемы, здесь мы не придерживаемся стилей. Проверьте функциональность !!! –

+0

для функциональности есть shutil, нет необходимости изобретать его. – khachik

Смежные вопросы