2
4

2 回答 2

1

尝试将 a 传递unicodeos.listdir

folder = u"emails"
b = os.listdir(folder)

这样做将导致os.listdir返回 unicodes 列表而不是strs。


不幸的是,我对此想得越多,我就越不明白为什么会这样。每个文件系统最终都使用某种编码将其文件名存储在字节中。例如 HDF+ 以UTF-16 存储文件名。os.listdir因此,如果可以最容易地返回这些原始字节而不会掺假,那将是有意义的。但相反,在这种情况下,它看起来os.listdir可以返回 unadulterated unicode,但不是 unadulterated 字节。

如果有人能解释这个谜,我将不胜感激。

于 2014-05-02T01:36:59.450 回答
1

这些文件是来自 Mac Roman 编码(大概是 MacOS 使用的),还是 Mac OS X 使用的 UTF-8 的 NFKD 标准形式?

Unicode 范式的概念是每个程序员都应该熟悉的……但很少有人知道。不过,我不能告诉你关于 Python 你还需要知道什么。

于 2014-05-02T11:01:01.833 回答