2015-11-11 2 views
1

Я пишу код на Python, в котором я проверяю, существует ли определенная папка; если это так, я удаляю его и создаю новый (с тем же именем). Код выглядит следующим образом:Python выдает ошибку при удалении каталога, открытого с помощью Windows Explorer

if os.path.exists(output_folder): 
    shutil.rmtree(output_folder) 
os.makedirs(output_folder) 

Этот код работает отлично, принимать, когда у меня есть, что конкретный output_folder открытого с windows explorer. Когда она открыта, я получаю следующее сообщение об ошибке в мой код:

WindowsError: [Error 5] Access is denied: [foldername] 

Одновременно windows explorer выключатели себя в родительский каталог foldername «s, и выдает сообщение об ошибке.

Есть ли способ заставить python игнорировать ошибку и продолжить работу, или я прошу чего-то, что невозможно из-за системы?

Я пробовал использовать shutil.rmtree(output_folder, ignore_errors=True), но ничего не изменил.

ответ

2

Вы можете использовать обработку исключений Python, чтобы поймать ошибку. Вероятно, вы также воспользуетесь небольшой задержкой перед созданием папки, чтобы дать Windows Explorer возможность закрыть:

import shutil 
import time 


try:  
    shutil.rmtree(output_folder) 
except WindowsError, e: 
    print "Failed to delete"  # Or just pass 

time.sleep(0.5) 
os.makedirs(output_folder) 
+0

Thanks @MartinEvans; Я думаю, что «спать» - это то, что сделала эта работа, потому что это не исключение. – Cheshie