Введение
Примеры
Постоянство Python
Такие объекты, как числа, списки, словари, вложенные структуры и объекты экземпляров классов, находятся в памяти вашего компьютера и теряются, как только сценарий завершается.
Pickle хранит данные постоянно в отдельном файле.
маринованные представление объекта всегда является объект байт во всех случаях , поэтому необходимо открывать файлы в wb
для хранения данных и rb
для загрузки данных из рассола.
данные могут быть любого типа, например,
data={'a':'some_value',
'b':[9,4,7],
'c':['some_str','another_str','spam','ham'],
'd':{'key':'nested_dictionary'},
}
Хранить данные
import pickle
file=open('filename','wb') #file object in binary write mode
pickle.dump(data,file) #dump the data in the file object
file.close() #close the file to write into the file
Загрузить данные
import pickle
file=open('filename','rb') #file object in binary read mode
data=pickle.load(file) #load the data back
file.close()
>>>data
{'b': [9, 4, 7], 'a': 'some_value', 'd': {'key': 'nested_dictionary'},
'c': ['some_str', 'another_str', 'spam', 'ham']}
Следующие типы можно мариновать
- Нет, правда и ложь
- целые числа, числа с плавающей точкой, комплексные числа
- строки, байты, байтовые массивы
- кортежи, списки, наборы и словари, содержащие только выбираемые объекты
- функции, определенные на верхнем уровне модуля (используя def, а не лямбду)
- встроенные функции, определенные на верхнем уровне модуля
- классы, которые определены на верхнем уровне модуля
- экземпляры таких классов, ДИКТ или результат вызова GetState ()
Функция утилиты для сохранения и загрузки
Сохранить данные в файл и из файла
import pickle
def save(filename,object):
file=open(filename,'wb')
pickle.dump(object,file)
file.close()
def load(filename):
file=open(filename,'rb')
object=pickle.load(file)
file.close()
return object
>>>list_object=[1,1,2,3,5,8,'a','e','i','o','u']
>>>save(list_file,list_object)
>>>new_list=load(list_file)
>>>new_list
[1, 1, 2, 3, 5, 8, 'a', 'e', 'i', 'o', 'u'