paul@21 | 1 | #!/usr/bin/env python |
paul@21 | 2 | |
paul@21 | 3 | from simplex import * |
paul@21 | 4 | import sys, time |
paul@21 | 5 | |
paul@21 | 6 | class IndexWriter: |
paul@21 | 7 | |
paul@21 | 8 | "A tab-delimited file writer." |
paul@21 | 9 | |
paul@21 | 10 | def __init__(self, f): |
paul@21 | 11 | self.f = f |
paul@21 | 12 | |
paul@21 | 13 | def append(self, entry): |
paul@21 | 14 | key, pos = entry |
paul@21 | 15 | entry = key + [pos] |
paul@21 | 16 | self.f.write("\t".join(map(str, entry)) + "\n") |
paul@21 | 17 | |
paul@21 | 18 | try: |
paul@21 | 19 | filename, numeric, interval, index_filename = sys.argv[1:5] |
paul@21 | 20 | fields = map(int, sys.argv[5:]) |
paul@21 | 21 | numeric = numeric == "true" |
paul@21 | 22 | except (IndexError, ValueError): |
paul@21 | 23 | print >>sys.stderr, "Usage: %s <filename> <numeric> <interval> <index> <field>..." % sys.argv[0] |
paul@21 | 24 | sys.exit(1) |
paul@21 | 25 | |
paul@21 | 26 | f = open(filename) |
paul@21 | 27 | fi = open(index_filename, "w") |
paul@21 | 28 | accessor = DelimitedRecord(fields, numeric=numeric) |
paul@21 | 29 | writer = IndexWriter(fi) |
paul@21 | 30 | |
paul@21 | 31 | try: |
paul@21 | 32 | t = time.time() |
paul@21 | 33 | make_index(f, accessor.get_key, int(interval), writer) |
paul@21 | 34 | print "Indexed in %s seconds." % (time.time() - t) |
paul@21 | 35 | |
paul@21 | 36 | finally: |
paul@21 | 37 | f.close() |
paul@21 | 38 | fi.close() |
paul@21 | 39 | |
paul@21 | 40 | # vim: tabstop=4 expandtab shiftwidth=4 |