我正在尝试做以下事情:解析我的音乐文件夹中的所有文件,如果它们是我的最爱,请将它们复制到单独的文件夹中。
为了实现这一点,我正在用我喜欢的曲目解析一个 xml,并使用这些信息来创建一个像这样结构的自定义字典
lovedSongs[artist][title] = 1
当我从我的文件夹中解析文件时,我从 id3 标签中读取了歌曲标题和艺术家,理论上,我尝试查看是否lovedSongs[tagArtist][tagTitle]
为 1
for filename in filelist:
if filename[-4:] == ".mp3":
try:
id3r = id3reader.Reader(filename)
except UnicodeDecodeError:
artist = "None"
title = "None"
except IOError:
artist = "None"
title = "None"
else:
artist = ensureutf8andstring(id3r.getValue('performer'))
title = ensureutf8andstring(id3r.getValue('title'))
if artist != "None" or title != "None":
if lovedSongs[artist][title] == 1:
print artist + ' - ' + title
当我尝试运行 .py 文件时,我得到一个字典 Key Error。我在这里找到了一个潜在的答案:How to make a python dictionary that return key for keys missing from the dictionary 而不是引发 KeyError?并像下面一样应用它,但我仍然得到关键错误
class SongDict(dict):
def __init__(self, default=None):
self.default = default
def __getitem__(self, key):
if not self.has_key(key):
self[key] = self.default()
return dict.__getitem__(self, key)
def __missing__(self, key):
return 0
最好的解决方案是什么?使用 try/except 来代替简单的 if?
PS我想我应该提到我是python的新手,只有几个小时的“经验”,这是我尝试学习语言的方式。