Как рекурсивно перебирать файловую структуру и переименовывать каталоги в python
Я хотел бы заново переименовать каталоги, изменив последний символ на нижний регистр (если это буква)
Я сделал это с помощью моих предыдущих сообщений (извините за двойную публикацию и не признавая ответы)
этот код работает для файлов, но как я могу адаптировать его в каталогах?
import fnmatch
import os
def listFiles(dir):
rootdir = dir
for root, subFolders, files in os.walk(rootdir):
for file in files:
yield os.path.join(root,file)
return
for f in listFiles(r"N:SonstigesgeoserverIM_TopoGISMAPTILEIMAGES_0tiles_2"):
if f[-5].isalpha():
os.rename(f,f[:-5]+f[-5].lower() + ".JPG")
print "Renamed " + "---to---" + f[:-5]+f[-5].lower() + ".JPG"
1 ответов
проблема в том, что по умолчанию os.прогулка - это нисходящий. При попытке переименовать каталоги во время обхода сверху вниз результаты непредсказуемы.
попробуйте os.walk
идти снизу вверх:
for root, subFolders, files in os.walk(rootdir,topdown=False):
редактировать
еще одна проблема у вас-это listFiles()
возвращается, Ну, файлы не каталоги.
этот (непроверенный) sub возвращает каталоги снизу вверх:
def listDirs(dir):
for root, subFolders, files in os.walk(dir, topdown=False):
for folder in subFolders:
yield os.path.join(root,folder)
return