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

获取目录文件列表时波斯语文件名引发编码错误

解决波斯语文件名导致的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:31:21