From 61e1d9067b23ca068f7e04b463e9454e2ca39f27 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 25 Dec 2020 15:10:55 +0200 Subject: simlify code --- create-files | 88 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/create-files b/create-files index 9aac59b..ac53c84 100755 --- a/create-files +++ b/create-files @@ -6,55 +6,53 @@ import sys import time -def dirnames(a, b): - dir_a = f"{root}/{a}" - dir_b = os.path.join(dir_a, str(b)) - if not os.path.exists(dir_a): - os.mkdir(dir_a) - if not os.path.exists(dir_b): - os.mkdir(dir_b) - return dir_a, dir_b +class Progress: + def __init__(self, goal): + self.goal = goal + self.cur = 0 + self.pref = time.time() + + def inc(self): + self.cur += 1 + self.update + + def update(self): + now = time.time() + if now - self.prev > 1: + self.prev = now + sys.stdout.write(f"\r{self.cur}/{self.goal}") + sys.stdout.flush() + + +class Filenames: + def __init__(self, numfiles, root): + self.numfiles = numfiles + self.root = root + self.perlevel = 1000 + + def filenames(self): + a = b = 0 + for i in range(self.numfiles): + dirname = f"{self.root}/{a}/{b}" + yield f"{dirname}", f"{dirname}/file-{i}" + if (i % self.perlevel) == 0: + b += 1 + if b > self.perlevel: + b = 0 + a += 1 -started = time.time() - root = sys.argv[1] numfiles = int(sys.argv[2]) -if not os.path.exists(root): - os.mkdir(root) - -per_level = 10 ** 3 -a = b = c = 0 -dir_a, dir_b = dirnames(a, b) -prev_status = 0 -for i in range(numfiles): - filename = os.path.join(dir_b, f"file-{i}") - open(filename, "w").close() - c += 1 - if c == per_level: - c = 0 - b += 1 - if b == per_level: - b = 0 - a += 1 - dir_a, dir_b = dirnames(a, b) - - percent = 100.0 * float(i) / float(numfiles) - now = time.time() - duration = now - started - if duration > 1: - speed = i / duration - else: - speed = 1 - if speed < 1: - print(speed, i, duration) - eta = (numfiles - i) / speed - - if now - prev_status > 1: - sys.stdout.write( - f"\rCreated {i} of {numfiles} files ({percent:.2f}%), at {speed:.0f}/s, {eta:.0f}s remaining" - ) - prev_status = now +progress = Progress(numfiles) +filenames = Filenames(numfiles, root) + +prevdir = None +for (dirname, filename) in filenames.filenames(): + if dirname != prevdir: + prevdir = dirname + os.makedirs(dirname) + open(filename, "w").close() sys.stdout.write("\n") -- cgit v1.2.1