【发布时间】:2014-05-09 01:12:30
【问题描述】:
我不想将整个 BSON 文档反序列化为 python dict,而是直接遍历它,利用 BSON 格式的原生可遍历性[1,2]
任何可用的 python BSON 库都可以吗?我可以很容易地看到获取 dict 的方法,但遍历二进制格式的方法似乎并不明显。
【问题讨论】:
我不想将整个 BSON 文档反序列化为 python dict,而是直接遍历它,利用 BSON 格式的原生可遍历性[1,2]
任何可用的 python BSON 库都可以吗?我可以很容易地看到获取 dict 的方法,但遍历二进制格式的方法似乎并不明显。
【问题讨论】:
这听起来像您要找的东西:https://github.com/bauman/python-bson-streaming
它允许流式传输 bson,而不是将整个文件加载到内存中。
来自文档:
from bsonstream import KeyValueBSONInput
from sys import argv
for file in argv[1:]:
f = open(file, 'rb')
stream = KeyValueBSONInput(fh=f, fast_string_prematch="somthing") #remove fast string match if not needed
for id, dict_data in stream:
if id:
...process dict_data...
【讨论】:
您遇到的问题是将 BSON 字符串转换为迭代器,它本身就是一个对象,您必须实际转换为语言结构,即字典。
即使使用 BSON 库,它仍然需要将其转换为 python 可以理解的可遍历对象,也就是字典。
但是回答你的问题:我不知道。
【讨论】: