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

Python实现文件名修改:遍历字典值替换字符

修正土耳其字符文件名替换的Python代码

你的代码存在两个核心问题,直接导致无法正常执行:

  1. 字典遍历方式错误:使用character_dictionary.values()只能获取英文替代字符,无法匹配对应的土耳其原字符,应该用items()同时获取键(土耳其字符)和值(英文替代字符)。
  2. 重复执行重命名:每替换一个字符就调用os.rename,会导致文件路径频繁变更,后续替换时原文件已不存在,直接触发报错。正确做法是先在内存中完成所有字符替换,生成最终文件名后再执行一次重命名。

另外,file = file.lower()会强制将文件名转为小写,若需保留原文件名的大小写格式,可删除这一行;如果确实需要统一为小写,再保留即可。

修正后的代码如下:

import os

path = r"C:\Users\ALpeR\Desktop/test_files"

turkish_characters = ["ğ", "ç", "ş", "ü", "ö", "ı"]
english_alternatives = ["g", "c", "s", "u", "o", "i"]
character_map = dict(zip(turkish_characters, english_alternatives))

for root, dirs, files in os.walk(path):
    for filename in files:
        # 先在内存中完成所有字符替换,生成最终文件名
        new_filename = filename
        for tr_char, en_char in character_map.items():
            # 若需要统一转小写,替换为:new_filename = new_filename.lower().replace(tr_char, en_char)
            new_filename = new_filename.replace(tr_char, en_char)
        
        # 仅当文件名确实变更时执行重命名,避免无效操作
        if new_filename != filename:
            old_file_path = os.path.join(root, filename)
            new_file_path = os.path.join(root, new_filename)
            os.rename(old_file_path, new_file_path)

这段代码会遍历目标文件夹下的所有文件,将文件名中的土耳其字符替换为对应英文字符,比如şğçı会被正确重命名为sgci。

内容的提问来源于stack exchange,提问作者Alper D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:40:33