Python Persistence

Chapter 166: Python Persistence

Parameter Details
obj pickled representation of obj to the open file object file
protocol an integer, tells the pickler to use the given protocol, -ASCII, – old binary format
0
1
file The file argument must have a write() method for dump method and for loading read() method
wb rb


Section 166.1: Python Persistence

Objects like numbers, lists, dictionaries,nested structures and class instance objects live in your computer’s memory and are lost as soon as the script ends.

pickle stores data persistently in separate file.

pickled representation of an object is always a bytes object in all cases so one must open files in wb to store data and rb to load data from pickle.

the data may be of any kind, for example,

data={'a':'some_value',
'b':[9,4,7],
'c':['some_str','another_str','spam','ham'],
'd':{'key':'nested_dictionary'},
}

Store data

import pickle
file=open('filename','wb')
pickle.dump(data,file)
file.close()

file object in binary write mode #dump the data in the file object #close the file to write into the file

Load data

import pickle
file=open('filename','rb')
data=pickle.load(file)
file.close()

file object in binary read mode

load the data back

data
{‘b’: [9, 4, 7], ‘a’: ‘some_value’, ‘d’: {‘key’: ‘nested_dictionary’},
‘c’: [‘some_str’, ‘another_str’, ‘spam’, ‘ham’]}

The following types can be pickled

None, True, and False

integers, floating point numbers, complex numbers

strings, bytes, bytearrays

tuples, lists, sets, and dictionaries containing only picklable objects

functions defined at the top level of a module (using def, not lambda)

built-in functions defined at the top level of a module

classes that are defined at the top level of a module

instances of such classes whose dict or the result of calling getstate()

GoalKicker.com – Python® Notes for Professionals 661

Section 166.2: Function utility for save and load

Save data to and from file

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’

Leave a Comment