diff --git a/python/obitools3/files/linebuffer.pxd b/python/obitools3/files/linebuffer.pxd new file mode 100644 index 0000000..a867d3e --- /dev/null +++ b/python/obitools3/files/linebuffer.pxd @@ -0,0 +1,6 @@ +#cython: language_level=3 + + +cdef class LineBuffer: + cdef object fileobj + cdef int size diff --git a/python/obitools3/files/linebuffer.pyx b/python/obitools3/files/linebuffer.pyx new file mode 100644 index 0000000..b0dbaf1 --- /dev/null +++ b/python/obitools3/files/linebuffer.pyx @@ -0,0 +1,23 @@ +#cython: language_level=3 + +''' +Created on 30 mars 2016 + +@author: coissac +''' + +cdef class LineBuffer: + + def __init__(self,object fileobj,int size=100000000): + self.fileobj=fileobj + self.size=size + + def __iter__(self): + cdef list buff = self.fileobj.readlines(self.size) + cdef str l + + while buff: + for l in buff: + yield l + buff = self.fileobj.readlines(self.size) +