Thomas Lotze wrote:
> AIUI (and as a little experimenting seems to confirm), you can't
> reposition an iterator over an mmap'ed file by seeking. True, you have
> both iterating by characters and seeking/telling, but the two
> functionalities don't play together.

A quick and dirty hack!? Maybe i'm missing what it is that you need ...

class MmapWithSeekAndTell(object):
     def __init__(self, m, size):
         self._m = m
         self._pos = 0
         self._size = size-1

     def __iter__(self):
         return self

     def next(self):
         if self._pos < self._size-1:
             self._pos += 1
             return self._m[self._pos]
         raise StopIteration

     def seek(self, offset, whence=0):
         if whence == 0 and 0 <= offset < self._size:
             self._pos = offset
         elif whence == 1 and 0 <= (self._pos + offset) < self._size:
             self._pos += offset
         elif whence == 2 and 0<= (self._size - offset) < self._size:
             self._pos = self._size - offset

     def tell(self):
         return self._pos


HtH, Roland

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

Reply via email to