[Tutor] Extracting lines in a file
cwitts at compuscan.co.za
Tue Apr 6 10:13:04 CEST 2010
Alan Gauld wrote:
> "ranjan das" <ranjand2005 at gmail.com> wrote
>> For instance lets say the unique string is "documentation" (and
>> "documentation" occurs more than once in the file). Now, on each
>> that the string "documentation" occurs in the file, I want to read
>> the 25th
>> line (from the line in which the string "documentation" occurs)
>> Is there a goto kind of function in python?
> There is a seek() function but it would require the lines to be of
> constant length. Its probably easier to just use a loop:
> def file_jump(fileobj, n =1):
> for line in range(n):
> That will move the file pointer forward n lines.
> Note, if the jumps can overlap the original then you might want
> to use tell() before the jump to store the original location then
> use seek() to go back. (eg if the trigger was in line 5 and the
> jump was 7 lines but the trigger also occured in line 10)
> for line in file:
> if trigger in line:
> marker = file.tell()
> file_jump(file, jumps[trigger])
> file.seek(marker) # go back to original position
If you know the line numbers you can use the linecache module to get any
line from any file for eg.
>>> import linecache
>>> linecache.getline('/etc/passwd', 4)
If what you require is more complex than simply that then you might be
better off doing line-for-line processing on the file.
More information about the Tutor