Я бы добавил это как комментарий к ответу Томаса Ватнедала , но пока не могу.
Незначительная проблема (которая не повлияет на Windows) заключается в том, что она проверяет только файлы или каталоги. Для Unix-подобных систем, где могут присутствовать символические ссылки, необходимо изменить строку:
if os.path.isfile(fullpath):
до
if os.path.isfile(fullpath) or os.path.islink(fullpath):
также для удаления ссылок.
Для меня изменение последней строки if match: removeall(match.group(1))
на
if match:
print "Removing " + match.group(1)
removeall(match.group(1))
, чтобы отображать то, что он удалял, тоже было полезно.
В зависимости от варианта использования часть регулярного выражения ?[\?ID]
может быть лучше, чем ?[\?I]
, поскольку D
также удаляет удаленные файлы, которые находились под контролем версий. Я хочу использовать это для создания чистой, проверенной папки, поэтому не должно быть файлов в состоянии D
.