Alan Gauld wrote:

"ranjan das" <ranjand2...@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)
'sys:x:3:3:sys:/dev:/bin/sh\n'

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


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to