diff options
author | Guido van Rossum <guido@python.org> | 2003-04-09 19:10:46 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-04-09 19:10:46 (GMT) |
commit | 21123ab7e5f79c8f035ccf80ac09725cdb679a36 (patch) | |
tree | d58508ea5acbb0a3ef4b802024ce826eecf1b51b | |
parent | a12fe4e81fa3221458e16225e76ec7b8a05820ee (diff) | |
download | cpython-21123ab7e5f79c8f035ccf80ac09725cdb679a36.zip cpython-21123ab7e5f79c8f035ccf80ac09725cdb679a36.tar.gz cpython-21123ab7e5f79c8f035ccf80ac09725cdb679a36.tar.bz2 |
Various improvements to the way the table is formatted, to deal with
exceptionally large totals etc.
-rw-r--r-- | Tools/scripts/byext.py | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/Tools/scripts/byext.py b/Tools/scripts/byext.py index adc925e..93759bc 100644 --- a/Tools/scripts/byext.py +++ b/Tools/scripts/byext.py @@ -30,6 +30,10 @@ class Stats: return names.sort() for name in names: + if name.startswith(".#"): + continue # Skip CVS temp files + if name.endswith("~"): + continue# Skip Emacs backup files full = os.path.join(dir, name) if os.path.islink(full): self.addstats("<lnk>", "links", 1) @@ -42,7 +46,10 @@ class Stats: head, ext = os.path.splitext(file) head, base = os.path.split(file) if ext == base: - ext = "" # .cvsignore is deemed not to have an extension + ext = "" # E.g. .cvsignore is deemed not to have an extension + ext = os.path.normcase(ext) + if not ext: + ext = "<none>" self.addstats(ext, "files", 1) try: f = open(file, "rb") @@ -70,7 +77,6 @@ class Stats: d[key] = d.get(key, 0) + n def report(self): - totals = {} exts = self.stats.keys() exts.sort() # Get the column keys @@ -79,30 +85,39 @@ class Stats: columns.update(self.stats[ext]) cols = columns.keys() cols.sort() - minwidth = 7 - extwidth = max([len(ext) for ext in exts]) - print "%*s" % (extwidth, "ext"), + colwidth = {} + colwidth["ext"] = max([len(ext) for ext in exts]) + minwidth = 6 + self.stats["TOTAL"] = {} for col in cols: - width = max(len(col), minwidth) - print "%*s" % (width, col), - print - for ext in exts: - print "%*s" % (extwidth, ext), - for col in cols: - width = max(len(col), minwidth) + total = 0 + cw = max(minwidth, len(col)) + for ext in exts: value = self.stats[ext].get(col) if value is None: - s = "" + w = 0 else: - s = "%d" % value - totals[col] = totals.get(col, 0) + value - print "%*s" % (width, s), + w = len("%d" % value) + total += value + cw = max(cw, w) + cw = max(cw, len(str(total))) + colwidth[col] = cw + self.stats["TOTAL"][col] = total + exts.append("TOTAL") + for ext in exts: + self.stats[ext]["ext"] = ext + cols.insert(0, "ext") + def printheader(): + for col in cols: + print "%*s" % (colwidth[col], col), print - print "%*s" % (extwidth, "TOTAL"), - for col in cols: - width = max(len(col), minwidth) - print "%*s" % (width, totals[col]), - print + printheader() + for ext in exts: + for col in cols: + value = self.stats[ext].get(col, "") + print "%*s" % (colwidth[col], value), + print + printheader() # Another header at the bottom def main(): args = sys.argv[1:] |