Does Python have any data types for FIFO buffering of strings? I created something (below) but suspect I'm reinventing the wheel.
class Buffer(list):
def __init__(self):
super(Buffer, self).__init__()
def put(self, nlmsg):
for c in nlmsg: self.append(c)
def peek(self, number):
return "".join( [self[i] for i in range(number)] )
def get(self, number):
return "".join( [self.pop(0) for i in range(number)] )
Usage example:
>>> buf = Buffer()
>>> buf.put('abcdefg')
>>> buf
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> buf.peek(4)
'abcd'
>>> buf
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> buf.get(5)
'abcde'
>>> buf
['f', 'g']
I looked at Queue but when adding a str I would have to split each byte manually, else the entire str would become an item in the queue. Is there anything like this already out there?
strrather than list however. String already has slicing capabilities and it would save the cost of usingjoin.timeitand see what works better :)