Windows не может переименовать путь с открытым файлом.Это должно работать, если вы переместите вызов os.rename
из блока with
, чтобы файл был закрыт.Однако вы повторяете это для нескольких файлов по одному пути, и имя каталога в path
больше не будет существовать после его переименования.Кроме того, os.walk
не может проходить через подкаталоги после того, как вы переименовали родительский каталог.
Я бы проверял файлы конфигурации во время обхода дерева и добавлял (path, new_path)
кортежи в список.Тогда я переименую каталоги в обратном порядке.
Кроме того, match
может быть None
, в этом случае попытка получить доступ к match.group
вызовет AttributeError
.И системные вызовы Windows, похоже, отлично справляются со смешанными разделителями на тот случай, если вы захотите пропустить шаг «Windowsify».Чтобы очистить путь для печати / регистрации, os.path.normpath
последовательно использует os.path.sep
, а также разрешает '.'и «..» на пути.