Marco Mariani wrote:

If the lines are really sorted, all you really need is a merge,

For the archives, and for huge files where /usr/bin/diff or difflib are not appropriate, here it is.


#!/usr/bin/env python

import sys

def run(filea, fileb):
    p = 3
    while True:
        if p&1: a = filea.readline()
        if p&2: b = fileb.readline()
        if not a or not b:
            break
        elif a == b:
            p = 3
        elif a < b:
            sys.stdout.write('-%s' % a)
            p = 1
        elif b < a:
            sys.stdout.write('+%s' % b)
            p = 2

    for line in filea.readlines():
        sys.stdout.write('-%s' % line)

    for line in fileb.readlines():
        sys.stdout.write('+%s' % line)


if __name__ == '__main__':
    run(file(sys.argv[1]), file(sys.argv[2]))

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to