Some general thoughts: > import sys > from stringCompare import stringcmp # this is a module which has > stringcmp > > fname1 = raw_input("Enter a file name to be read:\t") > fname2 = raw_input("Enter a file name to be read:\t") > > fd1 = open(fname1,"r") > fd2 = open(fname2,"r") > > > done = False
Use Boolean value instead of 1/0 > line_counter = 0 > while not done: > aLine1 = fd1.readline() > aLine2 = fd2.readline() > > if (aLine1 == "" or aLine2 == ""): # test whether you have > reached the > end of file > done = 1 assign directly to done, using a boolean test: done = not (aLine1 and aLine2) and miss out the if/else test. > line_counter += 1 # get the line number > string1 = aLine1.split() # split the line into a > list containing words > string2 = aLine2.split() Not sure why you are splitting the lines into words. You call them columns but they are really words of varying length. Why not just compare the lines as a whole? if aLine1 != aLine2: print "The difference lies in line", line_counter Then you can find the first characters that differ: diff = [t1==t2 for t1,t2 in zip(line1,line2)].index(False) print "and start at character", diff It's not exactly equivalent to your code of course but it seems to me to be more accurate... If you must use words, apply the spolit only when you know its needed: words1 = aLine1.split() words2 = aLine2.split() diff = [w1==w2 for w1,w2 in zip(words1,words2)].index(False) print "and start at word",diff HTH, -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor