Gavan Fantom
3 years ago
2 changed files with 59 additions and 1 deletions
@ -1,3 +1,6 @@ |
|||||||
# lstrend |
# lstrend |
||||||
|
|
||||||
Show trend data for files changing size |
Show trend data for files changing size |
||||||
|
|
||||||
|
usage: lstrend [-h] files [files ...] |
||||||
|
|
||||||
|
@ -0,0 +1,55 @@ |
|||||||
|
#!/usr/bin/python3 |
||||||
|
|
||||||
|
import argparse |
||||||
|
import os |
||||||
|
import time |
||||||
|
|
||||||
|
factor = 0.99 |
||||||
|
|
||||||
|
def get_sizes(files): |
||||||
|
sizes = [] |
||||||
|
for file in files: |
||||||
|
sizes.append(os.path.getsize(file)) |
||||||
|
return sizes |
||||||
|
|
||||||
|
def human_format(num): |
||||||
|
num = float('{:.3g}'.format(num)) |
||||||
|
magnitude = 0 |
||||||
|
while abs(num) >= 1024: |
||||||
|
magnitude += 1 |
||||||
|
num /= 1024.0 |
||||||
|
return '{}{}'.format('{:.3f}'.format(num).rstrip('0').rstrip('.'), ['', 'K', 'M', 'G', 'T', 'P'][magnitude]) |
||||||
|
|
||||||
|
def lstrend(files): |
||||||
|
avgrates = None |
||||||
|
sizes = None |
||||||
|
stamp = None |
||||||
|
while True: |
||||||
|
lastsizes = sizes |
||||||
|
laststamp = stamp |
||||||
|
sizes = get_sizes(files) |
||||||
|
stamp = time.monotonic() |
||||||
|
if lastsizes: |
||||||
|
diffs = [s-lastsizes[c] for c,s in enumerate(sizes)] |
||||||
|
tdelta = stamp-laststamp |
||||||
|
rates = [s/tdelta for s in diffs] |
||||||
|
if avgrates: |
||||||
|
avgrates = [avgrates[c]*factor+r*(1-factor) for c,r in enumerate(rates)] |
||||||
|
else: |
||||||
|
avgrates = rates |
||||||
|
print() |
||||||
|
for c,file in enumerate(files): |
||||||
|
print("{: <20} {: >10} {: >10}".format(file, human_format(avgrates[c]), human_format(sizes[c]))) |
||||||
|
time.sleep(1) |
||||||
|
|
||||||
|
|
||||||
|
def main(): |
||||||
|
parser = argparse.ArgumentParser(description='Show trend in file size') |
||||||
|
parser.add_argument('files', nargs='+', help='files to list') |
||||||
|
|
||||||
|
args = parser.parse_args() |
||||||
|
|
||||||
|
lstrend(args.files) |
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
main() |
Loading…
Reference in new issue