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