#!/usr/bin/python # ----------------------------------------------------------------------------- # Returns the distribution of alphabetic characters in input file # # (c) 2004 Jason Bittel # ----------------------------------------------------------------------------- import os import sys import string # ----------------------------------------------------------------------------- class g: frequencies = {} chars = 0 # ----------------------------------------------------------------------------- def parseFile(infile): """ """ try: input = open(infile) for line in input: for char in line: g.chars += 1 char = string.upper(char) if g.frequencies.has_key(char): g.frequencies[char] += 1 else: g.frequencies[char] = 1 input.close() except IOError, err: sys.stderr.write("Error: unable to access %s: %s\n" % (infile, err.strerror)) sys.exit() # ----------------------------------------------------------------------------- def printFrequencies(): """ """ freq = [(n, c) for c, n in g.frequencies.items()] freq.sort() freq.reverse() for count, char in freq: if char.isalpha(): print "%c (%i %.1f%%)" % (char, count, (float(count) / float(g.chars)) * 100.0) # ============================================================================= def main(): """ """ if not len(sys.argv) == 2: # Check for command line arguments print "Usage: %s [ filename ]\n" % os.path.basename(sys.argv[0]) sys.exit(0) parseFile(sys.argv[1]) printFrequencies() if __name__ == "__main__": main()