def dump(self, filename='category.dump.bz2'): '''Saves the contents of the dictionaries superclassDB and catContentDB to disk. ''' if not os.path.isabs(filename): filename = config.datafilepath(filename) if self.catContentDB or self.superclassDB: pywikibot.output(u'Dumping to %s, please wait...' % config.shortpath(filename)) f = bz2.BZ2File(filename, 'w') databases = { 'catContentDB': self.catContentDB, 'superclassDB': self.superclassDB } # store dump to disk in binary format try: pickle.dump(databases, f, protocol=pickle.HIGHEST_PROTOCOL) except pickle.PicklingError: pass f.close() else: try: os.remove(filename) except EnvironmentError: pass else: pywikibot.output(u'Database is empty. %s removed' % config.shortpath(filename))
def __init__(self, rebuild=False, filename='category.dump.bz2'): if rebuild: self.rebuild() else: try: if not os.path.isabs(filename): filename = config.datafilepath(filename) f = bz2.BZ2File(filename, 'r') pywikibot.output(u'Reading dump from %s' % config.shortpath(filename)) databases = pickle.load(f) f.close() # keys are categories, values are 2-tuples with lists as # entries. self.catContentDB = databases['catContentDB'] # like the above, but for supercategories self.superclassDB = databases['superclassDB'] del databases except: # If something goes wrong, just rebuild the database self.rebuild()