如何删除目录,即使其中的文件被python中的其他应用程序使用

如何删除目录,即使其中的文件被python中的其他应用程序使用,python,windows,file,Python,Windows,File,我正在使用shutil模块删除一个目录,但是目录中的一个文件在一个应用程序中使用,但是仍然有办法克服这个错误并删除目录 删除目录时给出的路径是直到temp_custom and Testing.img是一个正在其他应用程序中使用的文件 WindowsError:[错误32]进程无法访问该文件,因为它 正在被另一个进程使用: u'D:\MaharashtraIDSI\TempFolder\temp\u custom\Testing.img' 与Unix不同,Windows不允许匿名文件。这意味着,

我正在使用shutil模块删除一个目录,但是目录中的一个文件在一个应用程序中使用,但是仍然有办法克服这个错误并删除目录

删除目录时给出的路径是直到temp_custom and Testing.img是一个正在其他应用程序中使用的文件

WindowsError:[错误32]进程无法访问该文件,因为它 正在被另一个进程使用: u'D:\MaharashtraIDSI\TempFolder\temp\u custom\Testing.img'


与Unix不同,Windows不允许匿名文件。这意味着,即使“Testing.img”是用delete sharing(即
FILE\u SHARE\u delete
)打开的,这是不常见但可能的,在关闭最后一个内核文件对象(包括内核指针和用户句柄引用)之前,该名称实际上不会与“temp\u custom”目录解除链接。也就是说,如果(且仅当)使用“删除共享”打开该文件,则可以将该文件重命名为同一卷上的另一个目录(例如“D:\MaharashtraIDSI\TempFolder\Testing.img”)。然后您可以删除“temp_custom”目录。似乎当前的
shutil.rmtree
无法处理删除共享的情况。在Windows上,
os.unlink
调用
DeleteFile
,它不会取消任何链接。它在文件上设置删除配置。任何具有delete访问权限的句柄都可以取消该处置,并且在关闭最后一个引用之前,文件不会解除链接。一旦设置了处置,就不允许有新的引用,所以现在将文件移开已经太晚了。因此,
onerror
处理程序无法解决由
os.rmdir
引发的异常。需要一种完全不同的方法。