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

Python中ab+模式为何不支持read()?rb、rb+模式可正常工作

问题分析与解决方案

用ab+模式打开文件时,文件指针默认会定位到文件末尾,这时候直接调用pickle.load()会因为没有可读数据立刻触发EOFError,导致你看不到任何已存储内容,看起来像是无法正常运行。

你需要先将文件指针移到文件开头,才能读取已有的数据,修正后的代码如下:

import pickle

myfile = open(r'student_data.txt', 'ab+')
# 将文件指针移到文件开头,才能读取已存储的数据
myfile.seek(0)
data = {}
try:
    while True:
        data = pickle.load(myfile)
        print(data)
except EOFError:
    myfile.close()

补充说明:

  • ab+模式确实会保留原有数据且支持读写,核心问题是你忽略了文件指针的初始位置。
  • 若后续向文件写入新的pickle数据后需要再次读取,需再次调用seek(0)将指针移回开头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:15:34