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

使用pickle时触发TypeError:'str'对象无法被解释为整数

问题分析

你遇到的TypeError: 'str' object cannot be interpreted as an integer错误,看似出在open('rlog.pkl', 'rb')这一行,但核心原因是内置的open函数被其他同名函数覆盖了。

从代码看,你在coinsv_thread函数内导入了webclient模块,这个模块很可能包含一个名为open的函数,它的参数要求和Python内置open不同(比如需要整数参数),导致调用时传入文件名字符串就触发了类型错误。而你在Python Shell中能正常打开文件,是因为Shell环境里没有导入这个覆盖了open的模块。

修复方案

直接显式调用Python内置的open函数,避免被其他模块的同名函数干扰,修改代码中的打开文件部分:

# 替换原来的open调用,改用__builtins__.open
with __builtins__.open('rlog.pkl', 'rb') as handle:
    a = pickle.load(handle)
    # 注意:with语句会自动关闭文件,不需要手动调用handle.close()

另外,你的代码里手动调用了handle.close(),这是多余的——with上下文管理器会在代码块结束后自动关闭文件句柄,建议删掉这行。

额外验证步骤
  • 可以在coinsv_thread函数开头添加一行调试代码,确认open是否被覆盖:
print(type(open))
# 如果输出不是<class 'builtin_function_or_method'>,说明open确实被替换了
  • 检查webclient模块的文档或源码,确认它是否导出了open函数,后续可以用import webclient as wc这样的别名导入,避免名称冲突。

内容的提问来源于stack exchange,提问作者Gregory L.H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:36