def build_index(filename, sort_col):     index = []     f = open(filename)     while True:         offset = f.tell()         line = f.readline()         if not line:             break         length = len(line)         col = line.split('\t')[sort_col].strip()         index.append((col, offset, length))     f.close()     index.sort()     return index  def print_sorted(filename, col_sort):     index = build_index(filename, col_sort)     f = open(filename)     for col, offset, length in index:         f.seek(offset)         print f.read(length).rstrip('\n')  if __name__ == '__main__':     filename = 'somefile.txt'     sort_col = 2     print_sorted(filename, sort_col)

Read more of this post