file.readlines() question
jepler at unpythonic.net
jepler at unpythonic.net
Fri May 31 22:05:06 EDT 2002
this finds a line in f with the substring s, using a readlines hint,
defaulting to 4096. If found, it returns the line itself and the line
number (of the first match). Otherwise, it returns None.
Untested. :)
def findit(f, s, hint=4096):
lineno = 0
while 1:
chunk = f.readlines(hint)
if not chunk: break
for line in chunk:
lineno = lineno + 1
if string.find(line, s) != -1:
return line, lineno
in newer Python, you could write
def findit2(f, s):
lineno = 0
for line in f:
lineno = lineno + 1
if string.find(line, s) != -1:
return line, lineno
because when you treat a file like an iterator, it yields each
successive line (a drag if you happen to think files are made out of bytes
<\u00bd wink>). I think this is implemented with the efficiency of
readlines-sizehint internally.
Jeff
More information about the Python-list
mailing list