获取目录文件列表时波斯语文件名引发编码错误
解决波斯语文件名导致的UnicodeEncodeError问题
这个错误的核心原因是Windows终端默认采用cp1252编码,该编码不支持波斯语字符。当os.listdir()返回包含波斯语的Unicode文件名时,终端尝试用cp1252编码输出就会触发编码失败。
以下是几种可行的解决办法:
切换终端编码为UTF-8
在运行Python脚本前,先在终端执行命令:chcp 65001此命令将控制台编码切换为UTF-8,之后再运行你的脚本,
print(os.listdir('D:'))就能正常输出波斯语文件名。将文件名写入UTF-8编码的文件
如果不想修改终端编码,可以把所有文件名写入UTF-8格式的文件中查看:import os with open('d盘文件列表.txt', 'w', encoding='utf-8') as f: for filename in os.listdir('D:'): f.write(filename + '\n')打开生成的
d盘文件列表.txt即可看到完整的文件名(包括波斯语)。使用
os.scandir()替代(推荐处理大量文件时使用)os.scandir()返回的DirEntry对象性能更优,其name属性同样是Unicode字符串,处理方式与os.listdir()一致:import os for entry in os.scandir('D:'): print(entry.name)同样需要先执行
chcp 65001切换终端编码才能正常输出。
内容的提问来源于stack exchange,提问作者Spring98
相关产品推荐
相关产品推荐

