You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:57:03