2015-11-08 2 views
0
import shutil 

def copyDirectory(src, dest): 

    try: 
     shutil.copytree(src, dest) 
    except IOError as why: 
     print (why.strerror + ": " + src) 



source="C:/Users/Nexusfactor/Desktop/Copy" 
destination="C:/Users/Nexusfactor/Desktop/Destination" 

copyDirectory(source, destination) 

Я написал сценарий, который копирует каталог в пункт назначения. Если исходный каталог не существует, он будет печатать сообщение об этом.Я реализовал блок catch в Python?

Вопрос:

Я сделал что-нибудь в моем сценарии, который считается плохой практикой при попытке поймать и ошибки?

ответ

1

Ваш код в основном прекрасен, но вы уверены, что хотите отключить эту ошибку?

Если кто-то должен был использовать вашу функцию copyDirectory(), чтобы скопировать каталог, а затем продолжил выполнение других действий, его программа будет продолжать работать, даже если копирование каталогов не удалось. Из-за этого может возникнуть другая ошибка позже из-за этого, и к тому времени ее будет сложно отследить.

Почему бы не просто поднять ошибку? Пусть каждый отреагирует своими собственными ошибками на копирование каталога, поскольку обычно это важная часть вашей программы, что копирование было успешным.

+0

AH, Не могли бы вы помочь мне исправить свой код, чтобы проиллюстрировать, что вы говорите? – Nexusfactor

+0

@Nexusfactor Зачем определять 'copyDirectory()' в первую очередь, почему бы не использовать 'shutil.copytree()' напрямую? –

+0

Я мог бы, но я научился писать функции в Python и видел несколько примеров, где они использовали функцию, но я мог. Нет реальной причины, кроме, я хотел бы, – Nexusfactor

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