Mac OS X下的python 2.6上的Unicode文件名

时间:2009-12-11 10:36:53

标签: python unicode

我正在使用os.walk创建文件夹下所有音乐文件的列表。其中一些文件名是非ascii,例如:

  

01空即是色.mp3

我正在使用mutagen库来解析此文件的元数据,并且它声称完全支持unicode。文件名被检索为unicode,可以打印为unicode。但是,无论我做什么(包括预先规范化unicode,或事先将其编码为utf-8),mutagen都会尝试open()

  

01 \ xe7 \ xa9 \ xba \ xe5 \ x8d \ xb3 \ xe6 \ x98 \ xaf \ xe8 \ x89 \ xb2.mp3

  

01 \ u7a7a \ u5373 \ u662f \ u8272.mp3

如何强制它open()正确的文件名(完全能够print的文件名?)

完整代码为here.

注意:我对python和编程一般都是新手,对于我的代码你可以给出的任何建议都会非常感激。提前致谢

编辑:好的,这是我的一个相当尴尬的错误,问题不是字符编码,而是路径没有附加到open()调用。如何找到通过walk()找到的文件的完整路径?这些文件是2-3个目录。

1 个答案:

答案 0 :(得分:2)

请注意,walk(dir)会返回文件名,不带路径。如果要打开文件,则必须添加dir

for dirpath, dirnames, filenames in os.walk(dir):
    for filename in filenames:
        path = os.path.join(dirpath, filename)