comparison python/slice.py @ 700:2a3323626bcf

wfm
author Jeff Hammel <k0scist@gmail.com>
date Wed, 13 Aug 2014 11:24:09 -0700
parents 72d2a2e09c6a
children de7bf9523e21
comparison
equal deleted inserted replaced
699:72d2a2e09c6a 700:2a3323626bcf
10 import os 10 import os
11 import subprocess 11 import subprocess
12 import sys 12 import sys
13 13
14 # module globals 14 # module globals
15 __all__ = ['main', 'Parser'] 15 __all__ = ['slice', 'main', 'Parser']
16 16
17 def slice(container, n_chunks): 17 def slice(container, n_chunks):
18 size = int(len(container)/n_chunks) 18 size = int(len(container)/(n_chunks-1))
19 19 retval = []
20 start = 0
21 for i in range(n_chunks-1):
22 retval.append(container[start:start+size])
23 start += size
24 retval.append(container[start:])
25 return retval
20 26
21 class Parser(argparse.ArgumentParser): 27 class Parser(argparse.ArgumentParser):
22 """CLI option parser""" 28 """CLI option parser"""
23 def __init__(self, **kwargs): 29 def __init__(self, **kwargs):
24 kwargs.setdefault('description', __doc__) 30 kwargs.setdefault('description', __doc__)
25 argparse.ArgumentParser.__init__(self, **kwargs) 31 argparse.ArgumentParser.__init__(self, **kwargs)
26 self.add_argument('N', type=int, 32 self.add_argument('N', type=int,
27 help="number of chunks") 33 help="number of chunks")
28 self.add_argument('-M', '--len', dest='length', type=int, 34 self.add_argument('-M', '--len', dest='length', type=int, default=29,
29 help="length of list") 35 help="length of list [DEFAULT: %(default)s]")
30 self.options = None 36 self.options = None
31 37
32 def parse_args(self, *args, **kw): 38 def parse_args(self, *args, **kw):
33 options = argparse.ArgumentParser.parse_args(self, *args, **kw) 39 options = argparse.ArgumentParser.parse_args(self, *args, **kw)
34 self.validate(options) 40 self.validate(options)
43 49
44 # parse command line options 50 # parse command line options
45 parser = Parser() 51 parser = Parser()
46 options = parser.parse_args(args) 52 options = parser.parse_args(args)
47 53
54 # generate list
55 seq = range(options.length)
56
57 # chunk list
58 output = slice(seq, options.N)
59
60 # print output
61 for chunk in output:
62 print (",".join([str(i) for i in chunk]))
63
48 if __name__ == '__main__': 64 if __name__ == '__main__':
49 main() 65 main()
50 66