~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Demo/classes/Dbm.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# A wrapper around the (optional) built-in class dbm, supporting keys
 
2
# and values of almost any type instead of just string.
 
3
# (Actually, this works only for keys and values that can be read back
 
4
# correctly after being converted to a string.)
 
5
 
 
6
 
 
7
class Dbm:
 
8
 
 
9
    def __init__(self, filename, mode, perm):
 
10
        import dbm
 
11
        self.db = dbm.open(filename, mode, perm)
 
12
 
 
13
    def __repr__(self):
 
14
        s = ''
 
15
        for key in self.keys():
 
16
            t = repr(key) + ': ' + repr(self[key])
 
17
            if s: t = ', ' + t
 
18
            s = s + t
 
19
        return '{' + s + '}'
 
20
 
 
21
    def __len__(self):
 
22
        return len(self.db)
 
23
 
 
24
    def __getitem__(self, key):
 
25
        return eval(self.db[repr(key)])
 
26
 
 
27
    def __setitem__(self, key, value):
 
28
        self.db[repr(key)] = repr(value)
 
29
 
 
30
    def __delitem__(self, key):
 
31
        del self.db[repr(key)]
 
32
 
 
33
    def keys(self):
 
34
        res = []
 
35
        for key in self.db.keys():
 
36
            res.append(eval(key))
 
37
        return res
 
38
 
 
39
    def has_key(self, key):
 
40
        return self.db.has_key(repr(key))
 
41
 
 
42
 
 
43
def test():
 
44
    d = Dbm('@dbm', 'rw', 0600)
 
45
    print d
 
46
    while 1:
 
47
        try:
 
48
            key = input('key: ')
 
49
            if d.has_key(key):
 
50
                value = d[key]
 
51
                print 'currently:', value
 
52
            value = input('value: ')
 
53
            if value is None:
 
54
                del d[key]
 
55
            else:
 
56
                d[key] = value
 
57
        except KeyboardInterrupt:
 
58
            print ''
 
59
            print d
 
60
        except EOFError:
 
61
            print '[eof]'
 
62
            break
 
63
    print d
 
64
 
 
65
 
 
66
test()