删除使用 Windows 资源管理器打开的目录时 Python 抛出错误

Che*_*hie 4 python shutil windows-7 delete-file

我正在用 Python 编写代码,在其中检查某个文件夹是否存在;如果是,我将其删除并创建一个新的(同名)。代码如下:

 if os.path.exists(output_folder):
     shutil.rmtree(output_folder)  
 os.makedirs(output_folder)
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,当我output_folderwindows explorer. 当它打开时,我的代码中出现以下错误:

WindowsError: [Error 5] Access is denied: [foldername]
Run Code Online (Sandbox Code Playgroud)

同时,windows explorer将自身切换到foldername的父目录,并抛出错误。

有没有办法让python忽略错误并继续运行,或者我要求的东西由于系统而无法实现?

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

Mar*_*ans 5

您可以使用 Python 的异常处理来捕获错误。在再次创建文件夹以让 Windows 资源管理器有机会关闭之前,您也可能会受益于短暂的延迟:

import shutil
import time


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

time.sleep(0.5)
os.makedirs(output_folder)
Run Code Online (Sandbox Code Playgroud)