1

os.listdir()在一个目录上做,它返回一个像这样的列表:

[u'Somefile.gif', u'SomeDirectory', u'SomeJPEG.jpeg']

你是干什么用的?在我的搜索中,我听说过:

  1. 是一个固定的错误。
  2. 表示列出的项目是 unicode。

我不相信这两个都是真的。

4

2 回答 2

5

在 Python2 中,uinu'...'表示对象是 unicode。

从文档

在 2.3 版更改: 在 Windows NT/2k/XP 和 Unix 上,如果 path 是一个 Unicode 对象,结果将是一个 Unicode 对象列表。无法解码的文件名仍将作为字符串对象返回。

也许您正在os.listdir使用 unicode 参数进行调用。例如:

In [51]: import os

In [52]: os.listdir('.')
Out[52]: ['a', 'a.ps']

In [53]: os.listdir(u'.')
Out[53]: [u'a', u'a.ps']
于 2012-10-13T15:24:44.287 回答
1

The u prefix on your strs let you know that these are in fact unicode strings. Calling str on them will turn the unicode strings into "normal" python strings. However, this is only that simple if your file/directory names are made up of strictly ascii characters.

In [2]: L
Out[2]: [u'asdf', u'asdf', u'aasf']

In [3]: [str(i) for i in L]
Out[3]: ['asdf', 'asdf', 'aasf']

Hope this helps

于 2012-10-13T15:30:33.530 回答