【发布时间】: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)是<class 'module'>,type(pickle.load)是<class 'builtin_function_or_method'>,type(opened_file)是<class '_io.BufferedReader'>。不幸的是,他们都不是int类型 -
请发布完整的回溯。在出现错误的调用之前打印类型的行是正确的吗?
-
感谢@Barmar 的帮助!回溯可见here
-
如果您正常运行脚本而不是从 PyCharm 运行脚本会怎样?
标签: python python-3.x pickle