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

标签 python unicode

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

01 空即是色.mp3

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

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

01 \u7a7a\u5373\u662f\u8272.mp3

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

完整代码为here.

注意:我对 python 和一般编程相当陌生,如果您能就我的代码提供任何建议,我们将非常感激。提前致谢

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

最佳答案

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

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

关于python - Mac OS X 下 python 2.6 上的 Unicode 文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887215/

相关文章:

python - 在 pygame 中移动 cometd

python - 在python中滚动数组

python - 使用 pygame 显示 unicode 符号

java - unicode 到 URI 的百分比编码

python - 使用python在线阅读大文本

python - Flask 重定向后的 Twilio MessagingResponse()

python - flask : understanding POST method to transmit data

unicode - 圆圈中的感叹号的字符代码是什么?

r - 为什么在unicode字符串上的as.factor()对于每个操作系统都返回不同的结果?

c++ - utext_openUTF8 返回字符串 "mod-12k"的错误;