4

有没有一种简单的方法来获取腌制文件中的对象数量 - 比编写打开文件的函数更短,保持调用pickle.load方法并更新num_of_objs1 直到它捕获EOFError并返回值?

4

2 回答 2

7

不,没有。pickle 格式不存储该信息。

如果你需要那种类型的元数据,你需要在写的时候自己把它添加到文件中:

pickle.dump(len(objects), fileobj)
for ob in objects:
    pickle.dump(ob, fileobj)

现在第一条记录告诉你还有多少要遵循。

于 2013-05-06T16:36:57.343 回答
2

没有直接的方法可以找到泡菜的长度,但是如果您害怕运行无限循环,您可以尝试以下方法,

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
于 2018-09-14T10:06:19.870 回答