这可能是一个nooby的问题,但我找不到办法做到这一点! 我需要清除python中的stdin缓冲区。Python:清除标准输入缓冲区
想象我有以下bash脚本运行:从像这样的命令行
i=0
for ((; ;))
do
echo "$i"
((i++))
done
运行:./loop.sh |蟒蛇在myProg.py myProg.py
我希望拥有的东西如下:
count = 100
f = fileinput.input()
while True:
sleep(2)
# clear stdin somehow ...
# and read the most recent 100 lines
i = 0
while i < count:
myBuffer[i] = f.readline()
if len(myBuffer[i]) > 0:
i += 1
print myBuffer
我不认为我可以读取所有的线,之前它,因为它是在吐出来高速率,如果睡眠(仅用于测试atm)是几分钟似乎很愚蠢......有没有一种方法来设置标准输入缓冲区大小在python中?或者只是截断/清除它? BTW即时通讯使用python 2所以没有BUFSIZE参数
我看看这里How to avoid Python fileinput buffering
做的任何蟒蛇呢?但生病尝试无缓冲太:https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe
更新: 与非缓冲或stdbuf没有运气...