You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py经济系统开发遇报错:TypeError: open()参数数量不符如何解决?

解决discord.py经济系统里的open() TypeError问题

嘿,看你遇到的这个错误:discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: open() takes 1 positional argument but 2 were given,核心问题出在你调用open()的传参上——明明你写了两个参数,却被判定成传多了,大概率是**bandata变量出问题了**,下面给你一步步排查和解决的方法:

  • 先检查bandata的定义
    你得确认bandata是一个合法的文件路径字符串。比如如果你的代码里压根没定义这个变量,或者不小心把它赋值成了函数、类这类非字符串类型,那调用open(bandata, "r")肯定会报错。举个反例:要是你误写了bandata = open(把内置的open函数赋值给它了),那调用的时候就变成open(open, "r"),这能不报错嘛!
    正确的定义应该是这样的(假设你的数据文件和脚本在同一个文件夹里):

    bandata = "bank_data.json"
    
  • 确认内置open函数没被覆盖
    有时候咱们写代码会不小心自定义一个叫open的函数,把内置的open给覆盖了。如果你的自定义open只接受1个参数,那调用open(bandata, "r")的时候就会触发这个错误。
    检查下你的代码里有没有类似这样的自定义函数:

    def open(file):
        # 你自己写的代码
    

    有的话赶紧给这个函数改个名字,比如叫open_bank_file,别和内置函数重名。

  • 给你一个修复后的完整示例
    我把正确的get_bank_data函数写出来,还加了文件不存在的处理,避免首次运行报错:

    import json
    from discord.ext import commands
    
    # 先正确定义文件路径
    bandata = "bank_data.json"
    
    async def get_bank_data():
        try:
            with open(bandata, "r") as f:
                users = json.load(f)
        except FileNotFoundError:
            # 首次运行文件不存在,创建空字典并写入
            users = {}
            with open(bandata, "w") as f:
                json.dump(users, f)
        return users
    

这样调整之后,那个TypeError应该就消失啦!

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:56:42