os.walk 正在重命名包含“.”的文件夹

os.walk renaming folders which contain a '.'

我使用以下代码替换目录中的 file/folder 个名称。

old = abc
new = def

for path, subdirs, files in os.walk(folder_path):
    for name in files:
        if old in name:
            file_path = os.path.join(path, name)
            new_name = os.path.join(path, name.replace(old, new))
            os.rename(file_path, new_name)

这行得通,但是,我有一个名为 abc.files 的文件夹 os.walk 看不到这个文件夹,我该如何修复代码以便将 abc.files 更改为 def.files ?

如评论中所述,您只是重命名文件,而不是子目录,因为您没有遍历 subdirs 列表。试试这个:

for path, subdirs, files in os.walk(folder_path, topdown=False):
    for name in files + subdirs:
        if old in name:
            file_path = os.path.join(path, name)
            new_name = os.path.join(path, name.replace(old, new))
            os.rename(file_path, new_name)

topdown = False 确保它在重命名之前会进入子目录。