Module IO
[hide private]
[frames] | no frames]

Source Code for Module IO

 1  #!/usr/bin/python2.5 
 2  """Simple read/write/print support for lists of "zero-agnostic" khipu sums.""" 
 3   
 4  from __future__ import with_statement 
 5  import warnings, sys 
 6  import json # package python-json in debian. 
 7   
8 -def readSums (filename='khipu-sums.json', preserveInc=False):
9 """Read in the lists of khipu sums found.""" 10 data = json.read (open (filename, 'r').read () ) 11 result = {} 12 for k, kmap in data.iteritems(): 13 if k == '**INCOMPLETE**': 14 if preserveInc: 15 result[k] = kmap 16 continue 17 result[k] = {} 18 for ncords,lsts in kmap.iteritems(): 19 sums = [] 20 for l in lsts: 21 def tuple (x): 22 assert len(x)==2 23 return (x[0], x[1])
24 sums.append([tuple(x) for x in l]) 25 result[k][int(ncords)] = sums 26 return result 27
28 -def writeSums (output, filename='khipu-sums.json', trim=True):
29 """Write out the list of khipu sums found.""" 30 # slightly annoying because we have to stringify some keys 31 result = {} 32 for k, kmap in output.iteritems(): 33 if k == '**INCOMPLETE**': 34 result[k] = kmap 35 continue 36 kk = str(k) 37 result[kk] = {} 38 for ncords,lsts in kmap.iteritems(): 39 if lsts or not trim: # don't write empty lists 40 result[kk][str(ncords)] = lsts 41 # don't write khipu w/ no info 42 if trim and not result[kk]: 43 del result[kk] 44 with open(filename,'w') as f: 45 f.write(json.write(result))
46
47 -def printSums (output):
48 """Pretty-print the list of khipu sums.""" 49 khipus = list(output.keys()) 50 khipus.sort() 51 for k in khipus: 52 ncords = list(output[k].keys()) 53 ncords.sort() 54 for n in reversed(ncords): 55 for sums in output[k][n]: 56 print k, n, sums
57 58 # pretty print.
59 -def main ():
60 output = readSums() 61 printSums (output)
62 63 if __name__ == '__main__': main () 64