2013-05-06 2 views
1

Есть ли короткий способ получить количество объектов в маринованном файле - короче, чем написать функцию, которая открывает файл, продолжает вызывать метод pickle.load и обновлять num_of_objs на 1, пока он не поймает EOFError и не вернет значение?Как получить количество объектов в рассоле?

+0

Вы можете дать [мою функцию 'skip_pickle'] (http://stackoverflow.com/a/8910284/222914). Вам все равно придется перебирать весь файл. –

ответ

4

Нет, нет. Формат pickle не сохраняет эту информацию.

Если вам нужен этот тип метаданных, необходимо добавить его в файл самостоятельно при написании:

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

Теперь первая запись показывает, сколько еще должны следовать.

Смежные вопросы