Я создаю относительно простое приложение, которое запрашивает каталоги, проверяет, правильны ли они, а затем удаляет один из них и воссоздает его с содержимым другого. Я сталкиваюсь с этим странным поведением, я попытаюсь объяснить:Может ли кто-нибудь объяснить это странное поведение shutil.rmtree и shutil.copytree?
Когда у меня открыто окно папки назначения, и оно пустое, есть исключение, запрещенное доступом, после чего меня выталкивают из папки, и это удаляется. Но тогда, если он не пуст, он работает отлично, никаких исключений, целевой каталог (из того, что кажется) становится опустошенным, а затем заполнен файлами из исходного каталога. Что странно, потому что он должен прямо удалять папку назначения, несмотря ни на что, а затем воссоздать ее с тем же именем и содержимым из источника.
Это не имеет смысла для меня, разве не должно быть такого же исключения, когда я просматриваю каталог, когда он не пуст, как когда он пуст? В чем разница, все равно предполагается удалить папку. Есть ли логическое объяснение этому? Кроме того, если есть исключение, почему каталог удаляется в любом случае?
Код для этой конкретной части довольно проста (пожалуйста, имейте в виду, я новичок :))
def Delete(self, dest):
try:
shutil.rmtree(dest)
self.Paste(self.src, dest)
except (IOError, os.error) as e:
print e
def Paste(self, src, dest):
try:
shutil.copytree(src, dest)
except (IOError, os.error) as e:
print e
Получаете ли вы исключение, запрещенное доступом, из 'Delete()' или 'Paste()'? Трудно сказать, когда в блоке 'try' есть несколько операторов. Лучше всего добавить всю трассировку вашего вопроса. Обязательно отложите его на 4 пробела, чтобы он был доступен для чтения. – martineau