2015-11-11 31 views
1

我在Python中编写代码,其中检查某个文件夹是否存在;如果是这样,我删除它并创建一个新的(具有相同的名称)。代码如下:Python在删除用Windows资源管理器打开的目录时抛出错误

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

此代码工作正常,接受时,我有特定output_folderwindows explorer开放。当它是开放的,我得到我的代码中出现以下错误:

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

同时,windows explorer交换机本身foldername的父目录,并抛出一个错误。

有没有办法让python忽略错误并继续运行,或者我要求的东西是不可能的,因为系统?

我试过使用shutil.rmtree(output_folder, ignore_errors=True)但它没有改变任何东西。

回答

2

您可以使用Python的异常处理来捕获错误。在创建文件夹之后,您可能还会受益于短时间的延迟,以便Windows资源管理器有机会关闭:

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

相关问题