def load_csv_rows(fname, conversions=None, **kwargs):
    log.info("Loading %s", fname)
    with opener('rU')(fname) as fp:
        lines = (i for i in fp if not i.startswith('#'))
        r = csv.DictReader(lines, **kwargs)
        for row in r:
            row['source'] = fname
            if conversions:
                for k, f in conversions:
                    row[k] = f(row[k])
            yield row
def load_csv_rows(fname, conversions=None, **kwargs):
    log.info("Loading %s", fname)
    with opener('rU')(fname) as fp:
        lines = (i for i in fp if not i.startswith('#'))
        r = csv.DictReader(lines, **kwargs)
        for row in r:
            row['source'] = fname
            if conversions:
                for k, f in conversions:
                    row[k] = f(row[k])
            yield row
def build_parser(p):
    p.add_argument('infiles', metavar='infile', nargs='+')
    p.add_argument('--prefix', default='')
    p.add_argument('-o', '--outfile', default=sys.stdout, type=opener('w'))
    p.set_defaults(func=action)
def build_parser(p):
    p.add_argument('infiles', metavar='infile', nargs='+')
    p.add_argument('--prefix', default='')
    p.add_argument('-o', '--outfile', default=sys.stdout, type=opener('w'))
    p.set_defaults(func=action)