Message60942
It seems that python 2.4.2 file reading stuff (for l in
f) and (f.read()) cache EOF state. For f.next
documtation hints that there is internal buffer so I
guess that this is somewhat acceptable there. But for
f.read() there is no hint about internal buffering of
the state.
This is somewhat unfortunate as tail -f like
functionality is impossible to implement without doing
lowlevel io (os.read) (as traddional unix has no
select-like functionality on files).
Tested on solaris8. This is either library or
documentation bug.
Code below
def iterline(f):
""" Own function because the internal seems to
buffer EOF
"""
b=[]
while 1:
data=os.read()
print `data`,`b`,f.tell(), \
os.fstat(f.fileno()).st_size
if len(data) == 0:
time.sleep(1)
continue
idx=data.find('\n')
while idx > 0:
line=data[:idx]
if b:
yield ''.join(b) + line
b = []
else:
yield line
data=data[idx+1:]
idx=data.find('\n')
b.append(data)
raise StopIteration
Output
'' [''] 1699424 1699424
(log lines appended here)
'' [''] 1699424 1699647
|
|
Date |
User |
Action |
Args |
2008-01-20 09:58:48 | admin | link | issue1523853 messages |
2008-01-20 09:58:48 | admin | create | |
|