#!/usr/bin/python -u from __future__ import print_function import sys import itertools def file_iter(fil): line = None line = fil.readline() while line != '': yield line line = fil.readline() def row_iter(file_iter, split): for line in file_iter: yield line.split(split) def chunk(itr, chunk_amount=25): lst = itertools.cycle(itertools.chain([0]*chunk_amount, [1]*chunk_amount)) def grouper(key): return lst.next() return (list(x[1]) for x in itertools.groupby(itr, grouper)) def tabularize(fil, count, split): itr = row_iter(file_iter(fil), split) for chnk in chunk(itr, count): maxlens = [map(len,x) for x in chnk] maxlens = [max(x) for x in zip(*maxlens)] for line in chnk: print(' '.join(x.ljust(maxlens[idx]) for idx,x in enumerate(line)).rstrip()) if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() parser.add_argument('-c', '--count', nargs='?', default=25, type=int) parser.add_argument('-s', '--split', nargs='?', default=None) parser.add_argument('inp', nargs='?', default='-') args = parser.parse_args() inp = sys.stdin if args.inp != '-': inp = open(args.inp) with inp: try: tabularize(inp, count=args.count, split=args.split) except IOError, e: if e.errno != 32: raise