【发布时间】:2010-06-11 03:05:02
【问题描述】:
我正在尝试从目录树中删除旧的 SVN 文件。 shutil.rmtree 和 os.unlink raise WindowsErrors,因为脚本没有删除它们的权限。我怎样才能解决这个问题?
这是脚本:
# Delete all files of a certain type from a direcotry
import os
import shutil
dir = "c:\\"
verbosity = 0;
def printCleanMsg(dir_path):
if verbosity:
print "Cleaning %s\n" % dir_path
def cleandir(dir_path):
printCleanMsg(dir_path)
toDelete = []
dirwalk = os.walk(dir_path)
for root, dirs, files in dirwalk:
printCleanMsg(root)
toDelete.extend([root + os.sep + dir for dir in dirs if '.svn' == dir])
toDelete.extend([root + os.sep + file for file in files if 'svn' in file])
print "Items to be deleted:"
for candidate in toDelete:
print candidate
print "Delete all %d items? [y|n]" % len(toDelete)
choice = raw_input()
if choice == 'y':
deleted = 0
for filedir in toDelete:
if os.path.exists(filedir): # could have been deleted already by rmtree
try:
if os.path.isdir(filedir):
shutil.rmtree(filedir)
else:
os.unlink(filedir)
deleted += 1
except WindowsError:
print "WindowsError: Couldn't delete '%s'" % filedir
print "\nDeleted %d/%d files." % (deleted, len(toDelete))
exit()
if __name__ == "__main__":
cleandir(dir)
没有一个文件可以被删除。我做错了什么?
【问题讨论】:
-
只是为了掩盖显而易见的问题:您确定这是权限问题吗?
-
是的。它说:
WindowsError: [Error 5] Access is denied: 'dir'
标签: python permissions filesystems