Mercurial > hg > config
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 |