os.walk
отлично подходит для выполнения рекурсивного материала с файловой системой.
import os
def lowercase_rename(dir):
# renames all subforders of dir, not including dir itself
def rename_all(root, items):
for name in items:
try:
os.rename(os.path.join(root, name),
os.path.join(root, name.lower()))
except OSError:
pass # can't rename it, so what
# starts from the bottom so paths further up remain valid after renaming
for root, dirs, files in os.walk(dir, topdown=False):
rename_all(root, dirs)
rename_all(root, files)
Точка ходьба дерева вверх, что, когда у вас есть структура каталогов, как «/ A/B» вы будете иметь путь «/ A» во время рекурсии тоже. Теперь, если вы начинаете сверху, сначала переименовываете/A в/a, тем самым аннулируя путь/A/B. С другой стороны, когда вы начинаете снизу и сначала переименовываете/A/B в/A/b, это не влияет на другие пути.
На самом деле вы можете использовать os.walk
для сверху вниз, но это (немного) сложнее.
сценарий также должен переименовывать файлы. Кроме того, меняется ли структура каталогов в середине ходьбы, запутывает функцию os.walk? –