import sys import argparse import json import random __author__ = 'm3x1m0m' class c_num_gen: def __init__(self, imax_num, ifname): self.max_num = imax_num self.fname = ifname self.__nums = [] def __del__(self): # Save on object destruction. self.__write() def __read(self): with open(self.fname, "r") as rf: self.__nums = json.load(rf) def __write(self): with open(self.fname, "w") as wf: json.dump(self.__nums, wf) def __rand_num(self): num = random.randint(0, self.max_num) return hex(num).upper() def create_new_number(self): if len(self.__nums) == 0: self.__read() rand_num = self.__rand_num() while rand_num in self.__nums: rand_num = self.__rand_num() self.__nums.append(rand_num) return rand_num def main(): parser = argparse.ArgumentParser(description='Random number generator w/ memory.') parser.add_argument('-f','--file', help='File name for memory.', required=True) parser.add_argument('-c','--create', help='Create a new number.', action='store_true') args = parser.parse_args() max_num = (1<<16) generator = c_num_gen(max_num, args.file) if (args.create): print("New number: {}".format(generator.create_new_number())) if __name__ == "__main__": main()