[Tutor] Fastest way to iterate through a file
Robert Hicks
sigzero at gmail.com
Tue Jun 26 16:16:44 CEST 2007
Kent Johnson wrote:
> Robert Hicks wrote:
>> This is the loop code:
>>
>> for line in f2:
>> for id in idList:
>> if id in line:
>> print "%s: %s" % (id, f2.next())
>> found = "%s: %s" % (id, f2.next())
>> f3.write(found)
>>
>>
>> I have an list, idList[], that contains a list of id numbers. That code
>> will loop the the f2 file and for lines that have an id on it it will
>> print the "next" line (so I can see what it is doing) and write it to a
>> file. I will turn off that screen print after I get it going the way I
>> want it to.
>
> I don't see any particular reason this should be slow unless idList is
> large. Perhaps the output is being buffered somewhere and not appearing
> until the process is done? How are you running the program?
>
> BTW the line that you print and the line that you save to the file are
> not the same; every time you call f2.next() it will fetch another line
> from the file. If you want them to be the same you could say
> found = "%s: %s" % (id, f2.next())
> print found
> f3.write(found)
>
Thanks for that!
idList only has about 129 id numbers in it.
I am running it straight from a Linux console. I thought about buffering
but I am not sure how Python handles that.
Do you know if Python has a "slower" startup time than Perl? That could
be part of it though I suspect the buffering thing more.
Robert
More information about the Tutor
mailing list