【问题标题】:Too many arguments error from method with only one required argument方法中的参数过多错误,只有一个必需参数
【发布时间】:2019-06-02 04:18:06
【问题描述】:

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

代码:

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-argument(list-object named file)”。我做对了吗?现在的问题是:如何在没有 self 参数的情况下传递此列表的元素?

【问题讨论】:

  • 已解决:import essentia import essentia.standard from glob import glob for filename in glob('*.mp3'): print(filename) loader = essentia.standard.MonoLoader(filename=filename)跨度>

标签: python python-3.x arguments


【解决方案1】:

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

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

此外,如果您的示例代码不能真正指示您的 mp3 文件所在的位置,请务必将完整的文件路径传递给 MonoLoader 而不仅仅是文件名。

最后,我假设您只是在问题中显示了 while 循环的一部分,并且您实际上是在某处增加 i 以便它不会永远运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    相关资源
    最近更新 更多