仅具有一个必需参数的方法中的参数错误过多

时间:2019-01-07 13:33:35

标签: python python-3.x arguments

当我尝试向音乐加载器提供所选音乐文件时,发生错误:

代码:

import essentia
import essentia.standard
import os


file = os.listdir()
i = 0

number = len(file)
print("Number:", number)

while i<number:
    if file[i].endswith(".mp3"):
        print(file[i])

        filename = file[i]

        loader = essentia.standard.MonoLoader(file[i]) #<--ERROR 

        audio = loader()

        #...

错误:

__init__() takes 1 positional argument but 2 were given

我搜索后发现,不仅传递了文件名,而且传递了“自变量(名为文件的列表对象)”。我说对了吗?现在的问题是:如何在没有self参数的情况下传递此列表的元素?

1 个答案:

答案 0 :(得分:0)

快速浏览essentia docs for the MonoLoader method,看起来它需要多个参数,而filename不是第一个参数(除文件名之外,所有其他参数都是可选的)。因此,您需要指定要传递filename参数。例如:

loader = essentia.standard.MonoLoader(filename=file[i])

此外,如果您的示例代码不能真正表明mp3文件的位置,那么请确保将完整的文件路径传递给MonoLoader,而不仅仅是文件名。

最后,我假设您只是在问题中展示while循环的一部分,而实际上您是在某个地方递增i以便不会永远运行。