1 #!/usr/bin/env python 2 3 try: 4 import cPickle as pickle 5 except ImportError: 6 import pickle 7 8 import os 9 import sys 10 11 def compare_results(a, b): 12 return cmp(a[1], b[1]) 13 14 if __name__ == "__main__": 15 wiki = sys.argv[1] 16 if len(sys.argv) > 2: 17 correction = int(sys.argv[2]) 18 else: 19 correction = 0 20 21 combined = {} 22 23 print "Looking for polls under", wiki 24 25 for dirpath, dirnames, filenames in os.walk(wiki): 26 if os.path.split(dirpath)[-1] == "poll": 27 for filename in filenames: 28 pathname = os.path.join(dirpath, filename) 29 f = open(pathname, "rb") 30 try: 31 combined[filename] = pickle.load(f) 32 finally: 33 f.close() 34 35 averages = [] 36 totals = [] 37 38 print 39 print "Results:" 40 for poll, results in combined.items(): 41 print poll, results 42 values = results.values() 43 len_values = len(values) 44 sum_values = sum(values) + len_values * correction 45 averages.append((poll, float(sum_values) / len_values)) 46 totals.append((poll, sum_values)) 47 48 averages.sort(compare_results, reverse=1) 49 totals.sort(compare_results, reverse=1) 50 51 print 52 print "Results by averages:" 53 for poll, result in averages: 54 print "%-15s%f" % (poll, result) 55 56 print 57 print "Results by totals:" 58 for poll, result in totals: 59 print "%-15s%d" % (poll, result) 60 61 # vim: tabstop=4 expandtab shiftwidth=4