Лично я использую следующие функции и никогда не испытывал потери данных. Объекты, которые я сохраняю, это классы с очень различными атрибутами (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) расширения.