如果我在python中有一个单独的字符流,并且我想要一个4个字符长的字符串缓冲区,我怎么能拥有它以便最新的字符到达缓冲区的末尾而其他字符都向下移动一个.
我有一个字符流从串口输入并解码成一个变量,称为decoded循环的每次运行,只有一个字符从中读取ser.read().我希望在收到某个字符串时结束循环.为此,我希望能够将字符放入我可以检查的缓冲区中.
例如
解码循环的每次运行
H
e
l
l
o
Run Code Online (Sandbox Code Playgroud)
ser = serial.Serial(port='COM1')
PBIT = True
while PBIT
read = ser.read()
decoded = read.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
进入名为Buffer的变量.
" "
" H"
" He"
" Hel"
"Hell"
"ello"
Run Code Online (Sandbox Code Playgroud)
您可以使用collections.deque固定长度的(双端队列)创建缓冲区:
from collections import deque
size = 4
decode = "Hello"
buffer = deque(' '*size, maxlen=size)
for x in decode: # simulates characters coming from a stream
buffer.append(x)
print(''.join(buffer))
Run Code Online (Sandbox Code Playgroud)
一旦双端队列已满,则从对方端丢弃一个项目以容纳新条目.
H
He
Hel
Hell
ello
Run Code Online (Sandbox Code Playgroud)