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

时间:2012-04-01 05:29:04

标签: python python-2.7

我正在尝试编写一个检测器,检查是否可以使用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)

1 个答案:

答案 0 :(得分:2)

在Windows上无法确定文件删除是成功还是失败。该文件可以完全允许的共享模式打开,这意味着打开文件的另一次尝试将成功(无论您请求什么类型的访问)。

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

即使有一个准确的预告方式,一旦你获得了信息,它就会立即过时。例如,在您调用list_locked_files之后,程序可能会打开该目录中的另一个文件,这会导致rmtree()失败。