【发布时间】:2013-05-06 16:34:45
【问题描述】:
有没有一种简单的方法来获取腌制文件中的对象数量 - 比编写打开文件的函数更短,不断调用 pickle.load 方法并将 num_of_objs 更新 1 直到它捕获 EOFError 并返回值?
【问题讨论】:
-
你可以试试my
skip_picklefunction。您仍然需要遍历整个文件。
标签: python python-3.x pickle
有没有一种简单的方法来获取腌制文件中的对象数量 - 比编写打开文件的函数更短,不断调用 pickle.load 方法并将 num_of_objs 更新 1 直到它捕获 EOFError 并返回值?
【问题讨论】:
skip_pickle function。您仍然需要遍历整个文件。
标签: python python-3.x pickle
不,没有。 pickle 格式不存储该信息。
如果需要那种类型的元数据,需要在写的时候自己添加到文件中:
pickle.dump(len(objects), fileobj)
for ob in objects:
pickle.dump(ob, fileobj)
现在第一条记录告诉你还有多少要遵循。
【讨论】:
pickle.dump(objects, fileobj)
objects,那么你只能加载整个列表。
没有直接的方法可以找到泡菜的长度,但是如果您害怕运行无限循环,可以尝试以下方法,
company_id_processed=[]
with open("responses_pickle.pickle", "rb") as f:
while True:
try:
current_id=pickle.load(f)['name']
company_id_processed.append(current_id)
except EOFError:
print 'Pickle ends'
break
【讨论】: