diff options
author | Scot W. Stevenson <[email protected]> | 2017-10-25 08:29:02 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2017-10-30 14:44:35 -0700 |
commit | 47c8e7fd97d8406f3fe51882a4a2787103012a82 (patch) | |
tree | fd602b84c8734ea6cd02699e3b80f53a37d4e026 | |
parent | 5c2552c56456191e8038efe25ed66270c3f1501a (diff) |
Rewrite of function fBytes() in arc_summary.py
Replace if-elif-else construction with shorter loop;
remove unused parameter "Decimal"; centralize format
string; add function documentation string; conform to
PEP8.
Reviewed-by: Giuseppe Di Natale <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Scot W. Stevenson <[email protected]>
Closes #6784
-rwxr-xr-x | cmd/arc_summary/arc_summary.py | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/cmd/arc_summary/arc_summary.py b/cmd/arc_summary/arc_summary.py index 93918a08f..e19278cef 100755 --- a/cmd/arc_summary/arc_summary.py +++ b/cmd/arc_summary/arc_summary.py @@ -88,36 +88,38 @@ def div2(): sys.stdout.write("\n") -def fBytes(Bytes=0, Decimal=2): - kbytes = (2 ** 10) - mbytes = (2 ** 20) - gbytes = (2 ** 30) - tbytes = (2 ** 40) - pbytes = (2 ** 50) - ebytes = (2 ** 60) - zbytes = (2 ** 70) - ybytes = (2 ** 80) - - if Bytes >= ybytes: - return str("%0." + str(Decimal) + "f") % (Bytes / ybytes) + "\tYiB" - elif Bytes >= zbytes: - return str("%0." + str(Decimal) + "f") % (Bytes / zbytes) + "\tZiB" - elif Bytes >= ebytes: - return str("%0." + str(Decimal) + "f") % (Bytes / ebytes) + "\tEiB" - elif Bytes >= pbytes: - return str("%0." + str(Decimal) + "f") % (Bytes / pbytes) + "\tPiB" - elif Bytes >= tbytes: - return str("%0." + str(Decimal) + "f") % (Bytes / tbytes) + "\tTiB" - elif Bytes >= gbytes: - return str("%0." + str(Decimal) + "f") % (Bytes / gbytes) + "\tGiB" - elif Bytes >= mbytes: - return str("%0." + str(Decimal) + "f") % (Bytes / mbytes) + "\tMiB" - elif Bytes >= kbytes: - return str("%0." + str(Decimal) + "f") % (Bytes / kbytes) + "\tKiB" - elif Bytes == 0: - return str("%d" % 0) + "\tBytes" +def fBytes(b=0): + """Return human-readable representation of a byte value in + powers of 2 (eg "KiB" for "kibibytes", etc) to two decimal + points. Values smaller than one KiB are returned without + decimal points. + """ + + prefixes = [ + [2**80, "YiB"], # yobibytes (yotta) + [2**70, "ZiB"], # zebibytes (zetta) + [2**60, "EiB"], # exbibytes (exa) + [2**50, "PiB"], # pebibytes (peta) + [2**40, "TiB"], # tebibytes (tera) + [2**30, "GiB"], # gibibytes (giga) + [2**20, "MiB"], # mebibytes (mega) + [2**10, "KiB"]] # kibibytes (kilo) + + if b >= 2**10: + + for limit, unit in prefixes: + + if b >= limit: + value = b / limit + break + + result = "%0.2f\t%s" % (value, unit) + else: - return str("%d" % Bytes) + "\tBytes" + + result = "%d\tBytes" % b + + return result def fHits(Hits=0, Decimal=2): |