"Barak, Ron" <ron.ba...@lsi.com> wrote in message news:7f0503cd69378f49be0dc30661c6ccf602494...@enbmail01.lsi.com...
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 ?

Perhaps the extra agrument is 2. You don't mention your Python version, but in Python 2.6.1 gzip files don't support seeking from the end. An older (your?) version of Python may not be providing as helpful an error message.

f=gzip.GzipFile('blah.gz','r')
f.seek(-1,2)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\dev\python\lib\gzip.py", line 368, in seek
   raise ValueError('Seek from end not supported')
ValueError: Seek from end not supported

-Mark



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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to