如何(自动)区分Opus和Score对象?

时间:2019-01-16 15:21:05

标签: python music21

我正在处理1850年的O'Neills Folksong语料库,因为它涉及music21语料库。我需要遍历所有歌曲。

我尝试使用以下代码

songs = corpus.getComposer('oneills1850')
for ruta in songs:
    op = converter.parse(ruta)
    numbers = op.getNumbers()

...然后迭代数字。在大多数情况下,每个op变量都是Opus对象,并且其每个数字都与Score关联。

问题在于,这并不总是正确的。例如,songs的第15个元素(即索引14)本身是一个Score对象,而不是Opus。所以我的代码在尝试使用getNumbers时崩溃。

我猜想应该先检查op是Opus(在这种情况下,使用getNumbers就像我之前所做的那样)或Score(在这种情况下,跳过第二个迭代部分)来解决。但是我找不到解决方法,或者其他解决我问题的方法。

1 个答案:

答案 0 :(得分:1)

如果在调用对象之前必须确定对象的类型,请使用org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: case near line 3, column 146

isinstance