【发布时间】:2018-11-02 18:16:21
【问题描述】:
我有一个这样的文件夹结构:
Template
- Template1
- Template2
TemplateTest
- TemplateTest1
Config
- TemplateConfig
我想将每个文件名和每个文件夹名的“模板”替换为“MyApp”。
这是我的代码:
for root, dirs, files in os.walk(path):
for name in files:
if name.startswith("Template"):
replace = name.replace("Template",'MyApp')
os.rename(os.path.join(root,name),os.path.join(root,name.replace(old,new)))
for name in dirs:
if name.startswith("Template"):
replace = name.replace("Template",'MyApp')
os.rename(os.path.join(root,name),os.path.join(root,replace))
奇怪的是,这只替换了文件夹名称,而父文件夹名称的文件名不需要更改。像这样:
MyApp
- Template1
- Template2
MyAppTest
- TemplateTest1
Config
- MyAppConfig
但如果我执行此代码两次,那么它将替换文件。 我想知道为什么以及如何更改代码以替换我需要的所有内容?
【问题讨论】:
-
@PatrickArtner 手动输入的文件夹名称,抱歉,它们应该是相同的。
-
您可以尝试先只重命名目录,然后使用
for root, dirs, files in os.walk(path):TWICE 重命名文件 -
@Bazingaa 是的,我已经发现我需要执行两次才能得到我想要的。我很好奇为什么,有什么办法可以一次改变它。
-
old和new是什么?没有给出。 -
您使用的是什么平台?这在 Windows 10 上对我来说效果很好......在我将
old,new替换为os.rename(os.path.join(root,name),os.path.join(root,replace))