我正在使用 1850 O'Neills Folksong 语料库,因为它来自于 music21 语料库。我需要遍历所有歌曲。
我尝试使用以下代码
songs = corpus.getComposer('oneills1850')
for ruta in songs:
op = converter.parse(ruta)
numbers = op.getNumbers()
...然后迭代数字。在大多数情况下,每个op
变量都是一个 Opus 对象,它的每个数字都与一个分数相关联。
问题是这并不总是正确的。例如,第 15 个元素songs
(即索引 14)是一个 Score 对象本身,而不是 Opus。所以我的代码在尝试使用 getNumbers 时崩溃。
我想,解决方案应该事先检查是否op
是 Opus(在这种情况下使用 getNumbers,就像我之前所做的那样)或 Score(在这种情况下跳过第二次迭代部分)。但我找不到如何做到这一点,或任何其他解决我问题的方法。