Tailer (version 1.2)
index
/home/dmcc/prj/Tailer/Tailer.py

tail -f for multiple files written natively in Python
 
Polls files for appended text.  Can call a callback function with the
changes if you'd like, or you can control when the pollings occur.
 
Based on a post by Skip Montanaro in comp.lang.python (see http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=3D4C2C0B.274B0BE9%40alcyone.com&rnum=5&prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26q%3Dtail%2Bfile%26btnG%3DGoogle%2BSearch%26meta%3Dgroup%253Dcomp.lang.python.*)
 
Example:
# a callback function
def printer(filename, s):
    if s: print "%s:    %s" % (filename, s)
t = Tailer(file1, file2) # Tailer takes a list of files
t.pollloop(printer)
 
See pydoc for the other tailing modes (modes are pollloop, poll,
multipoll) by doing 'pydoc Tailer' in this directory.
 
Known bugs:
    It doesn't handle the case when a file is alterred in the middle very well.
 
Please feel free to contact me at dmcc AT bigasterisk DOT com with questions,
feature requests, patches, whatever.

 
Modules
            
os
sys
time
 
Classes
            
TailInterface
Tailer
TailedFile
 
class TailInterface
      An interface for file watching.
 
   Methods defined here:
__init__(self, *files, **kw)
Files is a list of files to watch.  Keyword arguments include:
interval (for the interval at which the file should be poll()ed
for pollloop() and initial for the initial end of the file.
Setting initial to zero will make it read the entire file on
the first poll() and any subsequent additions for the poll()s
after that.
poll(self)
If any files have grown, return a tuple containing the filename and
new text.  If no files have changed, we return None
pollloop(self, callback)
Continously watches the files for changes, sleeping for
'interval' amount of seconds in between (see __init__).  If there
are any changes, it will call the callback with two arguments:
the filename and new text.

Data and non-method functions defined here:
__doc__ = 'An interface for file watching.'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'Tailer'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class TailedFile
      An object representing an object being tailed and it's current state
 
   Methods defined here:
__init__(self, filename, initial=None)
Filename is the name of the file to watch.  initial is the
size where where should start watching from.  Omitting initial
will result in watching changes from the end of the file.
__len__(self)
Returns the size of the file
__str__(self)
Returns the filename of the file
poll(self)
Returns a string of the new text in the file if there is any.
If there isn't, it returns None.  If the file shrinks (for whatever
reason), it will start watching from the new end of the file.

Data and non-method functions defined here:
__doc__ = "An object representing an object being tailed and it's current state"
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'Tailer'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
class Tailer(TailInterface)
      An object that watches one or more files for additions.  You can
either call it whenever you want with poll(), or use pollloop()
to call it regularly.
 
   Methods defined here:
__init__(self, *files, **kw)
Given a list of files and some keyword arguments, constructs
an object which will watch the files for additions.  The optional
keyword 'interval' affects the frequency at which pollloop()
will check the files.  Keywords arguments will be passed along
to the TailedFiles.
multipoll(self)
Returns a list of changes in files.  It returns a list of
(filename, newtext) tuples.  If there are no changes, it will
return the empty list.
poll(self)
If any files have grown, return a tuple containing the
filename and new text.  If no files have changed, we return None.
Note that this function is a generator so that it will (try to)
give each file equal treatment in polling.
pollloop(self, callback)
Continously watches the files for changes, sleeping for
'interval' amount of seconds in between (see __init__).  If there
are any changes, it will call the callback with two arguments:
the filename and new text.

Data and non-method functions defined here:
__doc__ = 'An object that watches one or more files for add...ll(), or use pollloop()\n to call it regularly.'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
__module__ = 'Tailer'
str(object) -> string
 
Return a nice string representation of the object.
If the argument is a string, the return value is the same object.
 
Data
             __all__ = ['TailedFile', 'TailInterface', 'Tailer']
__author__ = 'David McClosky (dmcc@bigasterisk.com)'
__file__ = './Tailer.pyc'
__name__ = 'Tailer'
__version__ = 1.2
generators = _Feature((2, 2, 0, 'alpha', 1), (2, 3, 0, 'final', 0), 4096)
 
Author
             David McClosky (dmcc@bigasterisk.com)