如何用Python实现文件名首字母大写?运行报WinError 2错误怎么解决
报错原因
- 路径不完整:
os.walk返回的files列表仅包含纯文件名,没有携带文件所在的目录路径。如果你的脚本执行工作目录和文件实际所在的E:\Work\experiment\ex(或其下遍历到的子目录)不一致,系统无法根据纯文件名定位到目标文件,是触发该报错的核心原因。 - 逻辑存在缺陷:直接取
files[1]只会取当前目录下的第二个文件(列表索引从0开始),既没有遍历所有文件,也会在目录下文件数量小于2时触发索引越界错误。 - 方法使用不当:
os.renames是用于递归处理目录重命名的方法,普通单文件重命名无需使用该方法。
修复方案
修复后完整代码如下:
import os # 目标根目录,加r前缀避免路径转义符出错 root_path = r"E:\Work\experiment\ex" for root, dirs, files in os.walk(root_path): # 遍历当前目录下所有文件 for fil in files: # 拼接得到旧文件的完整绝对路径 old_full_path = os.path.join(root, fil) # 生成首字母大写后的新文件名 new_fil = fil.capitalize() # 拼接得到新文件的完整绝对路径 new_full_path = os.path.join(root, new_fil) # 文件名已经符合要求时跳过,避免重复操作 if old_full_path == new_full_path: continue # 执行重命名 os.rename(old_full_path, new_full_path) print(f"重命名完成:{fil} -> {new_fil}")
修复说明:
- 使用
os.path.join拼接目录路径root和文件名,生成完整绝对路径,确保系统可以正确定位到目标文件 - 遍历
files全量列表代替硬编码的索引取值,可处理目标目录下所有文件,同时规避索引越界风险 - 增加同名判断逻辑,避免文件名已经符合首字母大写规则时的无效操作
- 替换为更适配单文件重命名场景的
os.rename方法
内容的提问来源于stack exchange,提问作者Jony Ghosh
相关产品推荐
相关产品推荐

