40. Saving objects to file

In the example below, although pickle is a great way to save objects, shelve is an alternative to saving multiple data/objects into a central location.

40.1. Don’t do this

 1import pickle
 2
 3object_1 = 'pretend some big object 1'
 4object_2 = 'pretend some big object 2'
 5data = {
 6    'object_1': object_1,
 7    'object_2': object_2,
 8}
 9
10# write to file
11pickle.dump(data, open('data.p', 'wb'))
12
13# read from file
14data = pickle.load(open('data.p', 'rb'))

40.2. Do this

 1import shelve
 2
 3object_1 = 'pretend some big object 1'
 4object_2 = 'pretend some big object 2'
 5
 6# write to file
 7with shelve.open('data') as s:
 8    s['object_1'] = object_1
 9    s['object_2'] = object_2
10
11# read from file
12with shelve.open('data') as s:
13    print(s['object_1'])
14    print(s['object_2'])