Python实现文件名修改:遍历字典值替换字符
修正土耳其字符文件名替换的Python代码
你的代码存在两个核心问题,直接导致无法正常执行:
- 字典遍历方式错误:使用
character_dictionary.values()只能获取英文替代字符,无法匹配对应的土耳其原字符,应该用items()同时获取键(土耳其字符)和值(英文替代字符)。 - 重复执行重命名:每替换一个字符就调用
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.
相关产品推荐
相关产品推荐

