Looping issues

Larry Bates larry.bates at websafe.com
Thu Apr 5 14:27:52 EDT 2007


brochu121 at gmail.com wrote:
> What I am trying to do is compare two files to each other.
> 
> If the 2nd file contains the same line the first file contains, I want
> to print it. I wrote up the following code:
> 
> 
> 
> correct_settings = open("C:\Python25\Scripts\Output
> \correct_settings.txt","r")
> current_settings = open("C:\Python25\Scripts\Output\output.txt","r")
> 
> for line in correct_settings:
>         for val in current_settings:
>             if val == line:
>                 print line + " found."
> 
> 
> correct_settings.close()
> current_settings.close()
> 
> 
> For some reason this only looks at the first line of the
> correct_settings.txt file. Any ideas as to how i can loop through each
> line of the correct_settings file instead of just looking at the first?
> 
If the files aren't terribly large (not tested):

correct_lines=open(r"C:\Python25\Scripts\Output" \
                    "\correct_settings.txt", "r").readlines()

current_lines=open(r"C:\Python25\Scripts\Output\output.txt",
                    "r").readlines()

for line in current_settings:
    if line in correct_lines:
        print line + " found"

This does what you asked for but somehow I don't think it is
what you want.  I would suggest that you take a look at difflib.

Somththing along the lines of:

import difflib

correct_lines=open(r"C:\Python25\Scripts\Output" \
                    "\correct_settings.txt", "r").readlines()

current_lines=open(r"C:\Python25\Scripts\Output\output.txt",
                    "r").readlines()

delta=difflib.unified_diff(correct_lines, current_lines)
diffs=''.join(delta)

print diffs

Will show you the lines that are different and some lines
around it for context.

-Larry



More information about the Python-list mailing list