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
答案 0 :(得分:3)
要将UTF-8编码的路径名转换为Unicode路径名,请执行以下操作:
path = path.decode('utf-8')
例如:
>>> s = "Cura\xc3\xa7ao"
>>> print s.decode('utf-8')
Curaçao
答案 1 :(得分:1)
getsize
需要一个Unicode对象。您的字符串不是Unicode对象。这是一个编码为UTF-8的普通字符串。它们是two vastly different things。
要将UTF-8编码的字符串转换为UTF字符串,请使用
utfstring.decode("utf-8")
答案 2 :(得分:0)
嗯,我认为原始文件已经是XML文件了。