Потеря данных после сохранения и загрузки с использованием маринада - PullRequest
0 голосов
/ 07 марта 2020

У меня есть несколько словарей, списков и целых чисел. Я использовал pickle, чтобы сохранить мои данные и загрузить их позже. Общий размер файлов составляет 346 МБ.

Ниже приведены функции сохранения и загрузки.

def save_obj(obj, name):
    with open('obj/'+ name + '.pkl', 'wb') as f:
        pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)


def load_obj(name):
    with open('obj/' + name + '.pkl', 'rb') as f:
        return pickle.load(f)

Существуют ли ограничения, вызывающие потерю данных?

1 Ответ

0 голосов
/ 07 марта 2020

Лично я использую следующие функции и никогда не испытывал потери данных. Объекты, которые я сохраняю, это классы с очень различными атрибутами (np.array, pandas df, пользовательские классы, int, float, datetime, ...):

import pickle

def save_object_with_pickle(obj, obj_name, save_path):
    with open(save_path + obj_name, 'wb') as file:
        my_pickler = pickle.Pickler(file)
        my_pickler.dump(obj)

def load_object_saved_with_pickle(file_path):
    with open(file_path, 'rb') as file:
        my_depickler = pickle.Unpickler(file)
        return my_depickler.load()

Обратите внимание, что я не использую какие-либо (* .pkl) расширения.

...