Python 3 OS 走 unicode 异常

标签 python unicode

我在 win7 中使用 python 3.3.3 - 我只想列出网络目录中的所有文件。

import os

for root, dirs, files in os.walk("X:\\network\\path\\foo\\bar\\baz"):
    print(root)
    print(dirs)
    print(files)

打印一段时间后输出这个异常。

Traceback (most recent call last):
  File "program.py", line 6, in <module>
    print(files)
  File "C:\Python33\lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position
2753: character maps to <undefined>

我怎样才能简单地打印它?我似乎总是遇到 python 3 的这些 un​​icode 问题。我只想让简单的事情变得简单。

最佳答案

在 Windows 7 中,控制台不正确支持 Unicode 编码。您需要将字符串编码为 cp-437:

print(root.encode("cp437", "backslashreplace").decode("cp437"))

这应该删除 DOS 控制台中所有不可打印的字符,并将它们替换为它们的 \unnnn\xnn 等价物。

关于Python 3 OS 走 unicode 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027726/

相关文章:

python - 为什么 Python 多处理是顺序运行的?

python - 在 Django 身份验证期间分别验证用户名和密码

C# windows窗体无法显示简体中文字符

unix - 使用 sed 或 tr unix 命令使用 Unicode 代码或十六进制替换重音字符或特殊字符

javascript - JavaScript 是否支持正则表达式中高于 0xFFFF 的 Unicode 范围?

python - 添加的 QMenu 未触发 QAction

python - 安装 python 模型时出错

python - 在 NumPy 数组中使用 array.dtype = <data type> 分配 dtype 值会产生不明确的结果

python - Kivy 编码日语 (Unicode)

Python - 'ascii' 编解码器无法解码字节