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

使用pickle保存数据时出现TypeError的原因及解决方法

解决pickle dump时的TypeError: write() argument must be str, not bytes

这个问题我之前排查过好多次,核心原因其实是文件打开模式和pickle的写入需求不匹配。

你贴的代码里写了with open('vocabulary-embedding.pickle', 'wb') as f:,理论上'wb'是二进制写入模式,完全适配pickle的二进制输出,但错误提示说明实际运行时,你的文件对象是用**文本模式('w')**打开的——文本模式下,文件的write()方法只接受字符串,而pickle.dump()会生成二进制字节流,自然就触发了类型错误。

可能的原因和解决步骤:

  • 检查代码拼写:先仔细核对你的实际运行代码,是不是不小心把'wb'写成了'w'?比如手滑少打了个b,这种小失误很常见。
  • 确认文件模式正确:确保打开文件时确实用的是'wb'(二进制写入),而不是'w'(文本写入)或者其他错误模式。
  • 重启运行环境:如果代码看起来没问题,但错误依然存在,可能是编辑器的缓存或者终端的会话问题,重启编辑器/终端后重新运行代码试试。
  • 极简代码验证:你可以先跑一段极简测试代码,确认环境本身没问题:
    import pickle
    test_data = [1, 2, 3]
    with open('test.pickle', 'wb') as f:
        pickle.dump(test_data, f, -1)
    
    如果这段代码能正常运行,说明原代码里肯定有细节没注意到,再回去检查变量或文件路径相关的部分。

另外,你的输入数据(embedding、idx2word、word2idx)都是pickle可以正常序列化的类型,所以数据本身不会导致这个错误,不用太担心数据格式的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:27:36