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

tkb*_*kbx 1 python list

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

[u'Somefile.gif', u'SomeDirectory', u'SomeJPEG.jpeg']
Run Code Online (Sandbox Code Playgroud)

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

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

我不相信这些都是真的.

unu*_*tbu 5

在Python2中,uin u'...'表示对象是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']
Run Code Online (Sandbox Code Playgroud)

  • 你真的不想转换为标准字符串...处理unicode文件名最终是一个更好的选择恕我直言. (3认同)
  • 它不会导致任何问题,特别是如果您知道[每个软件开发人员必须知道的unicode绝对最低](http://www.joelonsoftware.com/articles/Unicode.html). (2认同)