【问题标题】:How do I get a list of all files in unicode?如何获取 unicode 中所有文件的列表?
【发布时间】:2015-08-17 08:18:45
【问题描述】:

我需要获取目录中的文件列表,其中文件名必须是 unicode。

下面的代码给了我一个文件列表。

files = [ f for f in listdir(filedirectory) if isfile(join(filedirectory,f)) ]
for fi in files:
    print(fi)
    print(type(fi))

结果:

AT10_nachmittags.JPG
<type 'str'>
AT11_nachmittags.JPG
<type 'str'>
AT12_nachmittags.JPG
<type 'str'>
AT2_morgens2.JPG
<type 'str'>
AT3_morgens.JPG
<type 'str'>
AT_morgens.JPG
<type 'str'>
Bühne.JPG
<type 'str'>
Bühnenauftritt.JPG
<type 'str'>

问题是这些不是 unicode。我需要它们是 unicode,所以我可以将它们写在一个文件中,因为它们包含德语“umlaute”unicode 符号。

我正在使用 python 2.7.6 开发 Mac OS X 10.10.4

【问题讨论】:

  • OS 和 Python 版本会很有用
  • 如果你打算使用 Unicode,我怎么强调你应该迁移到 Python 3。
  • Unicode 目前已转义。

标签: python python-2.7 unicode


【解决方案1】:

尝试使用文件目录作为 unicode 字符串参数执行 listdir。例如。文件目录 = u'/some/dir'

来自文档:

os.listdir(path) 返回包含条目名称的列表 path 给出的目录。该列表是任意顺序的。它确实 不包括特殊条目 '.'和 '..' 即使他们在场 在目录中。

可用性:Unix、Windows。

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

【讨论】:

  • 尝试切换到 Python 3
  • @Luke 我正在使用 python 2.7.10 返回 OS X,它会为我返回 Unicode 字符串。
  • @Luke:再检查一次。在您将filedirectory 传递给os.listdir() 之前,您确定isinstance(filedirectory, unicode) 是真的吗?
  • @svfat:无法解码的名称在 OSX 上不太可能,因为文件名是 utf-8。无论如何,问题中的所有名称都是可解码的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 2013-11-26
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多