【问题标题】:"int object is not callable" when trying to open pickle file?尝试打开 pickle 文件时“int 对象不可调用”?
【发布时间】:2023-01-31 02:33:29
【问题描述】:

我在一个科学家团队工作,并获得了一个泡菜文件,我们将其称为theFile.p。我正在尝试通过打开并加载 Pickle 文件

opened_file = open("theFile.p", "rb")
loaded_data = pickle.load(opened_file)

但我收到错误

    loaded_data = pickle.load(opened_file)
                     ^^^^^^^^^^^^^^^^^^^^^
TypeError: 'int' object is not callable

现在我知道该错误意味着您要么在某处忘记了算术运算符,要么声明了一个与内置函数名称匹配的变量名称(例如 max = max(1, 2))。 我想知道这是否意味着 theFile.p 内部存在某种问题导致此错误,如果是这样,如果我什至无法打开它,我将如何调试 Pickle 文件?或者这可能是我使用 Python 3.11 而 pickle 文件是在旧版本 Python 上制作的问题?

完整的追溯可以在这里看到

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py", line 1499, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/NAME/Desktop/Todo/Test/main.py", line 12, in <module>
    main()
  File "/Users/NAME/Desktop/Todo/Test/main.py", line 7, in main
    loaded_file = pickle.load(opened_file)
                  ^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'int' object is not callable

【问题讨论】:

  • 您是否检查过type(pickle)type(pickle.load)type(opened_file) 以确保它们没有在代码的其他地方被覆盖?
  • @G.Anderson 感谢您的回复!我已经检查过了。 type(pickle)&lt;class 'module'&gt;type(pickle.load)&lt;class 'builtin_function_or_method'&gt;type(opened_file)&lt;class '_io.BufferedReader'&gt;。不幸的是,他们都不是int类型
  • 请发布完整的回溯。在出现错误的调用之前打印类型的行是正确的吗?
  • 感谢@Barmar 的帮助!回溯可见here
  • 如果您正常运行脚本而不是从 PyCharm 运行脚本会怎样?

标签: python python-3.x pickle


【解决方案1】:

虽然我不相信这个具体适用于你,但我还是会问这个检查,因为任何人都会犯这个错误:你是否导入了 pickle 插件?

【讨论】:

    【解决方案2】:
    import pickle
    
    with open("theFile.p", "rb") as opened_file:
    loaded_data = pickle.load(opened_file)
    

    【讨论】:

    • 更改为 withpickle.load 的值有何帮助?
    • 你的缩进也是错误的。
    • 是的,这并不能解决问题
    猜你喜欢
    • 2013-12-13
    • 2019-02-22
    • 2011-08-09
    • 2016-03-21
    • 2015-01-29
    • 2014-03-17
    • 1970-01-01
    • 2022-11-28
    • 2012-11-04
    相关资源
    最近更新 更多