Issue1523853
Created on 2006-07-17 13:49 by beeki, last changed 2008-07-01 20:45 by georg.brandl.
|
msg60942 - (view) |
Author: Jarkko Torppa (beeki) |
Date: 2006-07-17 13:49 |
|
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
|
|
msg68577 - (view) |
Author: Facundo Batista (facundobatista) |
Date: 2008-06-22 19:33 |
|
In Linux, it seems to be the behaviour of the underlying C function 'fread'.
Do you think it's ok to add the following line in the read() documentation?
"""
As this function depends of the underlying C function :cfunc:`fread`,
inheritates its behaviour in details like caching EOF and others.
"""
Assigning this to George, to reword that in nicer English and apply.
Regards,
|
|
msg69074 - (view) |
Author: Georg Brandl (georg.brandl) |
Date: 2008-07-01 20:45 |
|
Added note in r64635.
|
|
| Date |
User |
Action |
Args |
| 2008-07-01 20:45:18 | georg.brandl | set | status: open -> closed resolution: fixed messages:
+ msg69074 |
| 2008-06-22 19:33:34 | facundobatista | set | assignee: georg.brandl messages:
+ msg68577 nosy:
+ georg.brandl, facundobatista |
| 2006-07-17 13:49:37 | beeki | create | |
|