Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/db2pickle.py @ 58689:514b56efd89a 3.1
Merged revisions 77962 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r77962 | r.david.murray | 2010-02-04 11:41:57 -0500 (Thu, 04 Feb 2010) | 17 lines
Merged revisions 77943,77959-77960 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r77943 | r.david.murray | 2010-02-03 08:36:23 -0500 (Wed, 03 Feb 2010) | 2 lines
Explicitly mention the default value for formatdate's usegmt parameter.
........
r77959 | nick.coghlan | 2010-02-04 07:43:58 -0500 (Thu, 04 Feb 2010) | 1 line
Issue 6760: Clarify args handling for subprocess.Popen. Patch by Chris Rebert
........
r77960 | r.david.murray | 2010-02-04 11:33:31 -0500 (Thu, 04 Feb 2010) | 2 lines
Add Chris Rebert to ACKS for issue 6760 Popen doc improvements.
........
................
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Thu, 04 Feb 2010 16:44:31 +0000 |
| parents | 979eb1bbf6e6 |
| children | fcfe324663a6 |
| rev | line source |
|---|---|
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
2 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
3 """ |
|
30804
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
4 Synopsis: %(prog)s [-h|-g|-b|-r|-a] dbfile [ picklefile ] |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
5 |
| 29549 | 6 Convert the database file given on the command line to a pickle |
|
31613
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
7 representation. The optional flags indicate the type of the database: |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
8 |
|
47285
afbde360dd1a
Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents:
31613
diff
changeset
|
9 -a - open using dbm (any supported format) |
|
31613
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
10 -b - open as bsddb btree file |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
11 -d - open as dbm file |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
12 -g - open as gdbm file |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
13 -h - open as bsddb hash file |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
14 -r - open as bsddb recno file |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
15 |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
16 The default is hash. If a pickle file is named it is opened for write |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
17 access (deleting any existing data). If no pickle file is named, the pickle |
|
46df08eb0839
* explain flags in doc strings
Skip Montanaro <skip@pobox.com>
parents:
30804
diff
changeset
|
18 output is written to standard output. |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
19 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
20 """ |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
21 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
22 import getopt |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
23 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
24 import bsddb |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
25 except ImportError: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
26 bsddb = None |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
27 try: |
|
47285
afbde360dd1a
Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents:
31613
diff
changeset
|
28 import dbm.ndbm as dbm |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
29 except ImportError: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
30 dbm = None |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
31 try: |
|
47285
afbde360dd1a
Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents:
31613
diff
changeset
|
32 import dbm.gnu as gdbm |
|
30804
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
33 except ImportError: |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
34 gdbm = None |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
35 try: |
|
57145
979eb1bbf6e6
Merged revisions 76156 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47285
diff
changeset
|
36 import dbm.ndbm as anydbm |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
37 except ImportError: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
38 anydbm = None |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
39 import sys |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
40 try: |
|
57145
979eb1bbf6e6
Merged revisions 76156 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47285
diff
changeset
|
41 import pickle as pickle |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
42 except ImportError: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
43 import pickle |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
44 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
45 prog = sys.argv[0] |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
46 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
47 def usage(): |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
48 sys.stderr.write(__doc__ % globals()) |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
49 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
50 def main(args): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
51 try: |
|
30804
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
52 opts, args = getopt.getopt(args, "hbrdag", |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
53 ["hash", "btree", "recno", "dbm", |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
54 "gdbm", "anydbm"]) |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
55 except getopt.error: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
56 usage() |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
57 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
58 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
59 if len(args) == 0 or len(args) > 2: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
60 usage() |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
61 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
62 elif len(args) == 1: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
63 dbfile = args[0] |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
64 pfile = sys.stdout |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
65 else: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
66 dbfile = args[0] |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
67 try: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
68 pfile = open(args[1], 'wb') |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
69 except IOError: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
70 sys.stderr.write("Unable to open %s\n" % args[1]) |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
71 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
72 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
73 dbopen = None |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
74 for opt, arg in opts: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
75 if opt in ("-h", "--hash"): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
76 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
77 dbopen = bsddb.hashopen |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
78 except AttributeError: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
79 sys.stderr.write("bsddb module unavailable.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
80 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
81 elif opt in ("-b", "--btree"): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
82 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
83 dbopen = bsddb.btopen |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
84 except AttributeError: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
85 sys.stderr.write("bsddb module unavailable.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
86 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
87 elif opt in ("-r", "--recno"): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
88 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
89 dbopen = bsddb.rnopen |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
90 except AttributeError: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
91 sys.stderr.write("bsddb module unavailable.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
92 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
93 elif opt in ("-a", "--anydbm"): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
94 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
95 dbopen = anydbm.open |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
96 except AttributeError: |
|
47285
afbde360dd1a
Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents:
31613
diff
changeset
|
97 sys.stderr.write("dbm module unavailable.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
98 return 1 |
|
30804
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
99 elif opt in ("-g", "--gdbm"): |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
100 try: |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
101 dbopen = gdbm.open |
|
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
102 except AttributeError: |
|
47285
afbde360dd1a
Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents:
31613
diff
changeset
|
103 sys.stderr.write("dbm.gnu module unavailable.\n") |
|
30804
ac8c7716a85d
allow dump/load of gdbm files
Skip Montanaro <skip@pobox.com>
parents:
29549
diff
changeset
|
104 return 1 |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
105 elif opt in ("-d", "--dbm"): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
106 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
107 dbopen = dbm.open |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
108 except AttributeError: |
|
47285
afbde360dd1a
Create the dbm package from PEP 3108. #2881.
Georg Brandl <georg@python.org>
parents:
31613
diff
changeset
|
109 sys.stderr.write("dbm.ndbm module unavailable.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
110 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
111 if dbopen is None: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
112 if bsddb is None: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
113 sys.stderr.write("bsddb module unavailable - ") |
|
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
114 sys.stderr.write("must specify dbtype.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
115 return 1 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
116 else: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
117 dbopen = bsddb.hashopen |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
118 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
119 try: |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
120 db = dbopen(dbfile, 'r') |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
121 except bsddb.error: |
|
27641
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
122 sys.stderr.write("Unable to open %s. " % dbfile) |
|
dd73a1218f69
try to avoid gross incompatibilities with older versions of Python
Skip Montanaro <skip@pobox.com>
parents:
27632
diff
changeset
|
123 sys.stderr.write("Check for format or version mismatch.\n") |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
124 return 1 |
|
28774
c9bee11eaa8b
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
27641
diff
changeset
|
125 |
|
27632
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
126 for k in db.keys(): |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
127 pickle.dump((k, db[k]), pfile, 1==1) |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
128 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
129 db.close() |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
130 pfile.close() |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
131 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
132 return 0 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
133 |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
134 if __name__ == "__main__": |
|
640e52dee1a0
dump database files to pickle format
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
135 sys.exit(main(sys.argv[1:])) |
