#!/usr/bin/env python3"""Synopsis: %(prog)s [-h|-b|-g|-r|-a|-d] [ picklefile ] dbfileRead the given picklefile as a series of key/value pairs and write to a newdatabase. If the database already exists, any contents are deleted. Theoptional flags indicate the type of the output database:-a - open using dbm (open any supported format)-b - open as bsddb btree file-d - open as dbm.ndbm file-g - open as dbm.gnu 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 readaccess. If no pickle file is named, the pickle input is read from standardinput.Note that recno databases can only contain integer keys, so you can't dump ahash or btree database using db2pickle.py and reconstitute it to a recnodatabase with %(prog)s unless your keys are integers."""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", "anydbm","gdbm"])except getopt.error:usage()return 1if len(args) == 0 or len(args) > 2:usage()return 1elif len(args) == 1:pfile = sys.stdindbfile = args[0]else:try:pfile = open(args[0], 'rb')except IOError:sys.stderr.write("Unable to open %s\n" % args[0])return 1dbfile = args[1]dbopen = 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, 'c')except bsddb.error:sys.stderr.write("Unable to open %s. " % dbfile)sys.stderr.write("Check for format or version mismatch.\n")return 1else:for k in list(db.keys()):del db[k]while 1:try:(key, val) = pickle.load(pfile)except EOFError:breakdb[key] = valdb.close()pfile.close()return 0if __name__ == "__main__":sys.exit(main(sys.argv[1:]))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。