Python是否有用于字符串FIFO缓冲的数据类型?我创造了一些东西(下面),但怀疑我正在重新发明轮子。Python字符串FIFO
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)])
用例:
>>> 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']
我看着Queue
但添加STR当我不得不每个字节手动分割,否则整个STR将成为在队列中的项目。有没有这样的东西?
不StringIO的你需要什么? http://docs.python.org/library/io.html#io.StringIO – 2012-02-09 21:35:57
@ThomasK我没有看过。但一看起来,它看起来可能不起作用,因为当读取正面时,它看起来像我将不得不移动剩余的数据,或者保留一个指向我在字符串中读取的位置的指针。 (即时通讯的一种newb,所以我可能会失去一些东西) – tMC 2012-02-09 21:43:37
类包装是我的好主意。然而,我会从'str'而不是列表继承。字符串已经具有切片功能,并且可以节省使用'join'的成本。 'timeit',看看什么效果更好:) – 2012-02-09 22:11:42