(SE) Självförsörjande PV-system utan förbinding till elnätet. (DE) Autarkes PV-System ohne Verbidung zum Stromnetz. https://stiefel.tech
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

44 lines
1.4 KiB

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()