python - 当唯一的区别是大写时,为什么 os.rename 不重命名文件?
问题描述
为什么这个基本的重命名脚本没有做它应该做的事情?只是试图将每个单词的第一个字母大写。
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
解决方案
如果您使用的操作系统具有不区分大小写的文件系统(例如 Windows),则可能会发生这种情况,其中原始名称和目标名称已经向我们显示既存在又指向同一个文件。
一种解决方法是简单地通过一个不同大小写的临时名称重命名:
for filename in glob.glob("**/*.mp3", recursive = True):
withcap = str(filename).title()
os.rename(filename, withcap+'.tmp')
os.rename(withcap+'.tmp', withcap)
推荐阅读
- c++ - QTCreator 无规则
- vba - Word 宏状态栏消息消失
- sed - 在第二次出现字符串后删除所有内容
- python - 使用 gitlab runner 通过 webdav 访问 Nextcloud 的问题
- node.js - 为什么上传到 s3 存储桶失败,Node.js 无法写入图像数据?
- php - Laravel 6 CORS 政策问题与 API
- linux - apachectl - 怀疑正则表达式
- xamarin.forms - xamarin.forms 基本本地数据库应用程序中发生 System.TypeLoadException
- php - 将波斯语转换为英语数字问题
- paypal - Braintree 生产帐户请求被拒绝