blocking file.readlines() needed
CptPicard
jpmorichon at earthlink.net
Fri Aug 13 13:16:29 EDT 2004
Geoff Howland has written a script, LogReader.py, that should give you some
hints on how to do your "tail -f".
http://unixnaut.com/skills/Languages/python/
Using google, I also found some talks about that. Here is one of the
solution that I found :
import sys,os
import time
from Tkinter import *
from ScrolledText import ScrolledText
class LogViewer(Frame):
def __init__(self, parent, filename):
Frame.__init__(self,parent)
self.filename = filename
self.file = open(filename, 'r')
self.text = ScrolledText(parent)
self.text.pack(fill=BOTH)
data = self.file.read()
self.size = len(data)
self.text.insert(END, data)
self.after(100, self.poll)
def poll(self):
if os.path.getsize(self.filename) > self.size:
data = self.file.read()
self.size = self.size + len(data)
self.text.insert(END, data)
self.after(100,self.poll)
if __name__ == "__main__":
root = Tk()
viewer = LogViewer(root, sys.argv[1])
viewer.mainloop()
"Uwe Mayer" <merkosh at hadiko.de> wrote in message
news:cfiqlr$3a8$1 at news2.rz.uni-karlsruhe.de...
> Hi,
>
> I am looking for a way to make the call to a file objects readline()
method
> blocking when there is no more data, until data is appended to the file,
> similar to the way
>
> $ tail -F <system log file>
>
> works.
>
> However, file.readlines() aborts and returns an empty list.
>
> Any ideas?
>
> Thanks
> Ciao
> Uwe
>
More information about the Python-list
mailing list