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
确保它在重命名之前会进入子目录。
我使用以下代码替换目录中的 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
确保它在重命名之前会进入子目录。