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

Python如何基于新旧文件名列表批量重命名指定文件夹内的文件

Python 批量重命名解决方案

注意:你给出的oldFname和NewFname为集合类型,Python集合不保证元素存储顺序,直接遍历配对极大概率出现新旧文件名对应错误的问题,优先推荐使用字典明确对应关系,避免文件名乱改。

稳妥方案:字典明确映射关系

先将你确定的新旧文件名对应关系整理为字典,保证每个旧文件对应唯一的新文件名,代码如下:

import os

# 基础配置
FldName = r'C:\Users\Shei\Documents\Test'
# 按你的实际对应关系修改字典,键为旧文件名,值为新文件名
fname_map = {
    'mangoes.txt': 'random.txt',
    'apple.txt': 'example1.txt',
    'banana.txt': 'something.txt'
}

for old_name, new_name in fname_map.items():
    # 拼接完整路径,避免脚本不在目标文件夹运行时报错
    old_path = os.path.join(FldName, old_name)
    new_path = os.path.join(FldName, new_name)
    
    # 异常捕获避免程序直接崩溃
    try:
        os.rename(old_path, new_path)
        print(f"重命名成功:{old_name} → {new_name}")
    except FileNotFoundError:
        print(f"重命名失败:旧文件 {old_name} 不存在")
    except FileExistsError:
        print(f"重命名失败:新文件名 {new_name} 已存在")
    except PermissionError:
        print(f"重命名失败:无文件夹读写权限")
    except Exception as e:
        print(f"重命名失败 {old_name}:{str(e)}")

替代方案:集合转列表按索引配对(不推荐,存在匹配错误风险)

如果你确定两个集合的元素顺序完全对应,可以用以下代码,但运行前务必先备份文件:

import os

FldName = r'C:\Users\Shei\Documents\Test'
oldFname = {'mangoes.txt', 'apple.txt', 'banana.txt'}
NewFname = {'random.txt', 'example1.txt', 'something.txt'}

# 集合转列表,注意顺序可能和你预期不一致
old_list = list(oldFname)
new_list = list(NewFname)

if len(old_list) != len(new_list):
    print("错误:新旧文件名数量不一致")
else:
    for old_name, new_name in zip(old_list, new_list):
        old_path = os.path.join(FldName, old_name)
        new_path = os.path.join(FldName, new_name)
        try:
            os.rename(old_path, new_path)
            print(f"重命名成功:{old_name} → {new_name}")
        except Exception as e:
            print(f"重命名失败 {old_name}:{str(e)}")

注意事项

  • 运行代码前请先备份目标文件夹内的所有文件,避免匹配错误导致文件无法找回
  • 如果需要覆盖已有同名文件,可以在捕获FileExistsError时先删除原有新文件再执行重命名,不推荐这么做容易丢失数据
  • 确保你的Windows账户对C:\Users\Shei\Documents\Test文件夹有读写权限

内容的提问来源于stack exchange,提问作者Py_junior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:06:03