Python 3 OS走unicode异常

时间:2014-01-09 17:59:15

标签: 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的这些unicode问题。我只想简单的事情很简单。

1 个答案:

答案 0 :(得分:2)

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

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

这应删除DOS控制台中无法打印的所有字符,并将其替换为\unnnn\xnn等效字符。