我正在使用 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/