为什么这个基本的重命名脚本没有做什么? 只是尝试将每个单词的首字母大写。
import glob
import os
for filename in glob.glob("**/*.mp3", recursive = True):
withcap = str(filename).title()
print("nc " +(filename))
print("wc " +(withcap))
os.rename(filename, withcap)
打印输出正确无误,但是在os.rename上什么都没有发生?
输出:
nc BLOOD COMMAND - Return Of The Arsonist [Clean].mp3
wc Blood Command - Return Of The Arsonist [Clean].Mp3
答案 0 :(得分:2)
如果您使用的文件系统不区分大小写,例如Windows,就会发生这种情况。原始名称和目标名称都已经向我们显示了现有名称并指向同一文件。
一种解决方法是简单地通过一个临时名称进行重命名,该临时名称的区别在于大小写:
for filename in glob.glob("**/*.mp3", recursive = True):
withcap = str(filename).title()
os.rename(filename, withcap+'.tmp')
os.rename(withcap+'.tmp', withcap)
答案 1 :(得分:0)
如评论中所述,原因是您正在使用不区分大小写的文件系统。它将旧名称和新名称视为相同,因此“重命名”成为空操作。
您必须为每个文件进行两次重命名:首先重命名为不同的临时名称;然后改为大写的实际名称。