Я пытаюсь удалить старые SVN-файлы из дерева каталогов. shutil.rmtree
и os.unlink
raise WindowsError
s, потому что у скрипта нет разрешений для их удаления. Как я могу обойти это?Python скрипт для удаления старых файлов SVN не имеет разрешения
Вот сценарий:
# 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: [Ошибка 5] Доступ запрещен: 'dir'' –