# HG changeset patch # User Jeff Hammel # Date 1419373890 28800 # Node ID bcf9ec537bda3c4ea59616f9a80e774a45e29881 # Parent 035e15e99e5717f07d3bb81a69bb01f5c3caf0b7 read from stdin if no files specified diff -r 035e15e99e57 -r bcf9ec537bda numerics/read.py --- a/numerics/read.py Tue Dec 23 13:54:34 2014 -0800 +++ b/numerics/read.py Tue Dec 23 14:31:30 2014 -0800 @@ -9,13 +9,14 @@ import argparse import csv import os -import subprocess import sys + # module globals __all__ = ['main', 'CSVParser'] string = (str, unicode) + class CSVSchema(object): """read CSV with a schema""" @@ -83,14 +84,15 @@ return retval + class CSVParser(argparse.ArgumentParser): """CLI option parser""" def __init__(self, **kwargs): kwargs.setdefault('description', __doc__) argparse.ArgumentParser.__init__(self, **kwargs) - self.add_argument('csv', nargs='+', - help="CSV files to read") + self.add_argument('csv', nargs='*', + help="CSV files to read, or read from stdin") self.add_argument('-+', '--add', dest='added_columns', nargs='+', help="append this column") self.add_argument('-c', '--col', '--columns', dest='columns', @@ -120,6 +122,10 @@ parser = CSVParser() options = parser.parse_args(args) + if not options.csv: + # read from stdin + options.csv = [sys.stdin] + # read CSV data = read_csv(*options.csv)