#!/usr/bin/env python3"""Synopsis: %(prog)s [-h|-g|-b|-r|-a] dbfile [ picklefile ]Convert the database file given on the command line to a picklerepresentation. The optional flags indicate the type of the database:-a - open using dbm (any supported format)-b - open as bsddb btree file-d - open as dbm file-g - open as gdbm file-h - open as bsddb hash file-r - open as bsddb recno fileThe default is hash. If a pickle file is named it is opened for writeaccess (deleting any existing data). If no pickle file is named, the pickleoutput is written to standard output."""import getopttry:import bsddbexcept ImportError:bsddb = Nonetry:import dbm.ndbm as dbmexcept ImportError:dbm = Nonetry:import dbm.gnu as gdbmexcept ImportError:gdbm = Nonetry:import dbm.ndbm as anydbmexcept ImportError:anydbm = Noneimport systry:import pickle as pickleexcept ImportError:import pickleprog = sys.argv[0]def usage():sys.stderr.write(__doc__ % globals())def main(args):try:opts, args = getopt.getopt(args, "hbrdag",["hash", "btree", "recno", "dbm","gdbm", "anydbm"])except getopt.error:usage()return 1if len(args) == 0 or len(args) > 2:usage()return 1elif len(args) == 1:dbfile = args[0]pfile = sys.stdoutelse:dbfile = args[0]try:pfile = open(args[1], 'wb')except IOError:sys.stderr.write("Unable to open %s\n" % args[1])return 1dbopen = Nonefor opt, arg in opts:if opt in ("-h", "--hash"):try:dbopen = bsddb.hashopenexcept AttributeError:sys.stderr.write("bsddb module unavailable.\n")return 1elif opt in ("-b", "--btree"):try:dbopen = bsddb.btopenexcept AttributeError:sys.stderr.write("bsddb module unavailable.\n")return 1elif opt in ("-r", "--recno"):try:dbopen = bsddb.rnopenexcept AttributeError:sys.stderr.write("bsddb module unavailable.\n")return 1elif opt in ("-a", "--anydbm"):try:dbopen = anydbm.openexcept AttributeError:sys.stderr.write("dbm module unavailable.\n")return 1elif opt in ("-g", "--gdbm"):try:dbopen = gdbm.openexcept AttributeError:sys.stderr.write("dbm.gnu module unavailable.\n")return 1elif opt in ("-d", "--dbm"):try:dbopen = dbm.openexcept AttributeError:sys.stderr.write("dbm.ndbm module unavailable.\n")return 1if dbopen is None:if bsddb is None:sys.stderr.write("bsddb module unavailable - ")sys.stderr.write("must specify dbtype.\n")return 1else:dbopen = bsddb.hashopentry:db = dbopen(dbfile, 'r')except bsddb.error:sys.stderr.write("Unable to open %s. " % dbfile)sys.stderr.write("Check for format or version mismatch.\n")return 1for k in db.keys():pickle.dump((k, db[k]), pfile, 1==1)db.close()pfile.close()return 0if __name__ == "__main__":sys.exit(main(sys.argv[1:]))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。