jon vs. python wrote: > Hi everyone, > I have a file with this content: > > "1 > 1 > 1 > 1 > 1 > 1 > 1 > 2 > 1 > 1" > > I wanted a little script that would print the line containing "2" and > every line containing "1" after it. I've tried this: > > >>> def p(): > f = file("prueba.txt",'r') > for startline in f.read(): > if startline.find("2") != -1: > print startline > for endline in f.read(): > if endline.find("1") != -1: > print endline > break > f.close() > > > >>> p() > 2 > > I found a way for doing it. > > But still I don't really understand why I don't get two "1" lines > printed. It seems that every line is read in "for startline f.read()" > so "for endline in f.read()" will start reading but find no data, am I > right? From the manual: "read([size]) Read at most size bytes from the file (less if the read hits EOF before obtaining size bytes). If the size argument is negative or omitted, read all data until EOF is reached."
Instead use readline(). Then realize that will also consume the entire file, so a nested readline() will return "". _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor