[Tutor] Nested, line by line, file reading

Luis N globophobe at gmail.com
Sun Dec 16 14:38:36 CET 2007


On Dec 16, 2007 10:17 PM, jon vs. python <jonvspython at gmail.com> 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?
>
> Thanks, Jon.
>


Try something like:

show_ones = False

for line in f.read():
    if line.find(2) != -1 or show_ones == True:
       print line
       show_ones = True


More information about the Tutor mailing list