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

Python调用open()存储JSON变量报错takes 0 positional arguments but 2 were given

错误产生原因
  • 命名冲突:你自定义了名为open的无入参函数,直接覆盖了Python内置的用于文件操作的open()函数。save()方法中调用open("Filen.json", "w")时传入了2个参数,和你自定义的无参open()函数参数数量不匹配,直接触发该类型错误。
  • 附加代码问题:你在写入JSON时错误使用了json.dumps()方法,该方法仅能将对象序列化为JSON字符串,无法直接写入文件对象,后续即使解决命名冲突也会触发参数错误。
修复方案
  • 第一步:重命名自定义函数,避免和Python内置函数重名,例如将你的open()函数改名为open_local_file(),如果项目其他位置有调用该自定义函数的地方同步修改名称即可。
  • 第二步:替换JSON写入方法,将json.dumps修改为json.dump,适配写入文件的场景。

修复后代码示例

import json
import os
import tkinter.filedialog as tfd

# 此处省略btn1的初始化定义代码
file_name = ""
def save():
    global file_name
    with open("Filen.json", "w") as file:
        # 替换为json.dump写入文件
        json.dump(file_name, file)

# 自定义函数改名,避免覆盖内置open
def open_local_file():
    global file_name
    if file_name == "":
        file_name = tfd.askopenfilename()
        os.startfile(file_name)
    else:
        os.startfile(file_name)
    save()
    if btn1["text"] == "":
        btn1["text"] = file_name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:48:02