[Tutor] Extracting lines in a file

Christian Witts 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 
>> instance
>> 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):
>            fileobj.readline()
> 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)
> Pseudocode:
> for line in file:
>     if trigger in line:
>         marker = file.tell()
>         file_jump(file, jumps[trigger])
>         process_file_data()
>         file.seek(marker)   # go back to original position
> HTH,

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.

Kind Regards,
Christian Witts

More information about the Tutor mailing list