import numpy as np from tempfile import NamedTemporaryFile as Tmp def load_csv_file(fname, *args, **kargs): f = open(fname) data = np.genfromtxt(f, delimiter=",", comments="#", *args, **kargs) f.close() # don't leak file handles return data def write_csv_file(fname, rows, header=None, width=None): if fname is None: f = Tmp() else: f = open(fname, 'w') if width: fmt = "%%%ds" % width else: fmt = "%s" if header: f.write('#') f.write(", ".join([fmt % str(x) for x in header])) f.write('\n') for row in rows: f.write(' ') f.write(", ".join([fmt % str(x) for x in row])) f.write('\n') if fname is None: # keep it open f.flush() return f else: f.close() def select(keep, rows): ok_rows = np.zeros(len(rows), dtype=bool) for i, row in enumerate(rows): ok_rows[i] = keep(row) return rows[ok_rows]