Python操作GridFS时如何读取GridOut对象的全部chunk块
问题根因
每次调用readchunk()时你都重新执行了fs.find_one(file_id)获取新的GridOut实例,每个实例的读取指针默认从文件起始位置开始,因此每次调用都只会返回第一个chunk。
解决方案
复用同一个GridOut实例循环读取即可,实例内部会自动维护读取偏移量,每次调用readchunk()后偏移量自动后移,直到返回空字节代表所有chunk读取完成。
代码示例
# 初始化Mongo连接和GridFS(替换为你自身的连接配置) client = MongoClient() db = client[db_name] fs = gridfs.GridFS(db) # 仅获取一次GridOut实例,不要放到循环内部 grid_out = fs.find_one(file_id) # 循环读取所有chunk while True: chunk = grid_out.readchunk() # 读取结果为空时代表所有chunk已读完 if not chunk: break # 此处添加你自己的chunk处理逻辑 handle_chunk(chunk)
补充说明
如果你不需要逐chunk处理,直接调用grid_out.read()即可一次性读取整个文件的全部内容,无需手动遍历chunk。
内容的提问来源于stack exchange,提问作者big_djas
相关产品推荐
相关产品推荐

