[Tutor] Nested, line by line, file reading
bob gailer
bgailer at alum.rpi.edu
Sun Dec 16 14:47:22 CET 2007
Luis N wrote:
> 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
>
See my post re use of readline instead of read
Also note that when testing booleans you don't need == True. Just write
if line.find(2) != -1 or show_ones:
More information about the Tutor
mailing list