saving dictionaries
Alex Martelli
aleaxit at yahoo.com
Fri Dec 22 03:06:46 EST 2000
"QdlatY" <qdlaty at wielun.dhs.org> wrote in message
news:3A4300C7.FA4192AF at wielun.dhs.org...
> Hello!
>
> How to easily save and load contents of dictionaries (2 elements + key)
> to file?
The standard module pickle (and its speedier version cPickle) is a
good solution. You may also want to look into shelve and anydbm,
which do far more than just 'load and save' but are still connected
to solving persistency issues.
Here's a simple script showing off pickle use: if you run it with
arguments, as in:
python dipik.py uno one due two tre three
it will build (and save to file 'dipik.pickled') a dictionary
{'uno': 'one', 'due': 'two', 'tre': 'three'}.
If you then call it without arguments, it will load the dict
from that same file and display it. It's intended to be a
very simple and purely didactic script, of course -- nothing
complicated or 'advanced' in it!
-- cut dipik.py
import sys, pickle
filename = 'dipik.pickled'
numargs = len(sys.argv)
if numargs==1:
# no args: load and display the dictionary
# that was last saved to dipik.pickled
dict = pickle.load(open(filename,"rb"))
keys = dict.keys()
keys.sort()
for key in keys:
print "%20s %20s" % (key, dict[key])
else:
# args: build a dictionary using alternate
# args as keys and values, then save it
dict = {}
if numargs%2 == 0:
# odd number of args, ignore last one
numargs -= 1
for i in range(1,numargs,2):
key, value = sys.argv[i:i+2]
dict[key] = value
pickle.dump(dict, open(filename,"wb"))
-- end dipik.py
Alex
More information about the Python-list
mailing list