這可能是一個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沒有運氣...