os.listdir返回带有神秘字符的列表

时间:2012-10-13 15:19:52

标签: python list

我正在对目录执行os.listdir(),并返回如下列表:

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

你有什么用?在我的搜索中,我听说过这个:

  1. 是一个固定的错误。
  2. 表示列出的项目是unicode。
  3. 我不相信这些都是真的。

2 个答案:

答案 0 :(得分:5)

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

From the docs

  

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

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

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']

答案 1 :(得分:1)

u上的str前缀让您知道这些实际上是unicode字符串。在它们上调用str会将unicode字符串转换为“普通”python字符串。但是,如果您的文件/目录名称由严格的ascii字符组成,那就很简单了。

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

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

希望这有帮助