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 |
