1) 将 iTunes 播放列表导出为 xml 文件
2)用plistlib读取xml文件
3)提取歌曲的位置,例如file://localhost/D:/music/Paul%20Desmond/Bossa%20Antigua/05%20-%20Cura%C3%A7ao%20Doloroso.m4a
4) 用 urllib.unquote 更正%20 for ' '
等并删除文件://localhost/
5) 尝试使用os.path.getsize
生成的文件名并得到错误
6) 纯 ascii 文件名没有问题
import os
import urllib
fn = 'D:/music/Paul%20Desmond/Bossa%20Antigua/05%20-%20Cura%C3%A7ao%20Doloroso.m4a'
path = urllib.unquote(fn)
os.path.getsize(path)
Traceback (most recent call last):
File "uni.py", line 9, in <module>
print os.path.getsize(path)
File "C:\program files\python27\lib\genericpath.py", line 49, in getsize
return os.stat(filename).st_size
WindowsError: [Error 2] The system cannot find the file specified: 'D:/music/Pau
l Desmond/Bossa Antigua/05 - Cura\xc3\xa7ao Doloroso.m4a'
getsize 适用于D:\music\Paul Desmond\Bossa Antigua\05 - Curaçao Doloroso.m4a.
如何将文件名更改为适用于 getsize 的文件名?如果我可以更改\xc3\xa7
为ç,它会起作用,所以我想我错过了一些简单的 unicode 问题。
http://docs.python.org/2/howto/unicode.html#unicode-filenames包括“os 模块中的函数,例如也os.stat()
将接受 Unicode 文件名。”
我在win7下使用python 2.7.2。xml文件是utf8