Python:检测Windows 7中无法检测到的目录
我正在尝试编写一个检测器,检查是否可以使用shutil.rmtree删除某个目录。我有一个部分代码完成如下,现在工作部分 当目标文件夹下的任何.exe文件仍在运行时,此代码现在能够发出警告。但是,如果编辑器打开文件夹下的任何特定文件(这是导致目录不可删除的另一个原因),此代码还不能标记警告。任何指导都将不胜感激。提前谢谢 注意:我使用open方法来检查任何锁定的文件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
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,然后检查该文件是否仍然存在。(这是一个笑话,实际上不要这样做:))你的意思是在问题标题中“删除”(两次)而不是“检测”吗?如果我正确理解你的问题,第一次是检测(这是我希望找到答案的问题)。然后第二次是删除(这个我已经解决了)