Python:检测Windows 7中无法检测到的目录

Python:检测Windows 7中无法检测到的目录,python,python-2.7,Python,Python 2.7,我正在尝试编写一个检测器,检查是否可以使用shutil.rmtree删除某个目录。我有一个部分代码完成如下,现在工作部分 当目标文件夹下的任何.exe文件仍在运行时,此代码现在能够发出警告。但是,如果编辑器打开文件夹下的任何特定文件(这是导致目录不可删除的另一个原因),此代码还不能标记警告。任何指导都将不胜感激。提前谢谢 注意:我使用open方法来检查任何锁定的文件 def list_locked_files(dir): isLocked = False for name in

我正在尝试编写一个检测器,检查是否可以使用shutil.rmtree删除某个目录。我有一个部分代码完成如下,现在工作部分

当目标文件夹下的任何.exe文件仍在运行时,此代码现在能够发出警告。但是,如果编辑器打开文件夹下的任何特定文件(这是导致目录不可删除的另一个原因),此代码还不能标记警告。任何指导都将不胜感激。提前谢谢

注意:我使用open方法来检查任何锁定的文件

def list_locked_files(dir):

    isLocked = False
    for name in os.listdir(dir):
        uni_name = unicode(name)
        fullname = dir + u'/' + uni_name

        if os.path.isdir(fullname):
            list_locked_files(fullname)
        else:
            try:
                f = open(fullname, 'r+')
                f.close()
            except IOError:
                print fullname + u' is locked!'
                isLocked = True
   if isLocked is True:
        print u'Please close the files/dir above !'
        sys.exit(0)

不一定能够确定在Windows上删除文件是否成功。该文件可以在完全许可共享模式下打开,这意味着再次尝试打开该文件将成功(无论您请求何种访问)

判断文件是否可以删除的唯一方法是实际尝试


即使事先有一个准确的方法告诉你,一旦你得到了信息,它马上就过时了。例如,在调用
list\u locked\u files
后,程序可能会在该目录中打开另一个文件,这将导致
rmtree()
失败。

您只需调用系统文件delete,然后检查该文件是否仍然存在。(这是一个笑话,实际上不要这样做:))你的意思是在问题标题中“删除”(两次)而不是“检测”吗?如果我正确理解你的问题,第一次是检测(这是我希望找到答案的问题)。然后第二次是删除(这个我已经解决了)