Hi,

I am getting the error TypeError: seek() takes exactly 2 arguments (3 given), 
namely:

$ ./_LogStream.py
Traceback (most recent call last):
  File "./_LogStream.py", line 47, in <module>
    log_stream.last_line_loc_and_contents()
  File "./_LogStream.py", line 20, in last_line_loc_and_contents
    self.input_file.seek(-1, 2) # grab the last character
TypeError: seek() takes exactly 2 arguments (3 given)

When I run the below code.

I understand that the extra argument is the "self", but I don't know how to 
change my class to make the seek(-1,2) work.

Could you help ?

Thanks,
Ron.

$ cat _LogStream.py
#!/usr/bin/env python

import gzip
import sys

from Debug import _line as line

class LogStream():

    def __init__(self, filename):
        self.filename = filename
        self.input_file = self.open_file(filename)
        self.index_increment = 10
        self.last_line_offset = -1

    def last_line_loc_and_contents(self, estimated_line_size=1024):

        assert estimated_line_size > 0
        file_size = len(self.input_file.read())
        self.input_file.seek(-1, 2) # grab the last character

        if self.input_file.read(1) == '\n': # a "proper" text file
            file_size -= 1

    def open_file(self, in_file):
        """
        The gzip module checks if the input file is a gzipped file, only at the 
read stage.
        This is why the f.readline() is needed.
        """
        try:
            f = gzip.GzipFile(in_file, "r")
            f.readline()
        except IOError:
            f = open(in_file, "r")
            f.readline()

        f.seek(0)
        return(f)


if __name__ == "__main__":
    filename = 
"../save_state/hp/save_state-ssp8400-0709R00004_081126-121659/var/log\\sac.log.4.gz"
    log_stream = LogStream(filename)
    log_stream.limit_ = 1000
    log_stream.index_increment = 12

    log_stream.last_line_loc_and_contents()
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to