Прерывание в реальном времени stdout от другого процесса в Python

Да. Это является немного более замысловатым, чем удаление "старого" текста сначала, но:

я начинаюсь с..

line1
line2
line3
line4

old1
old2
old3
old4

я сдвиг + v выбирает line1, строка 2, 3 и 4, и удаляет их с командой

d Тогда, я удаляю старые 1-4 строки тот же путь.

Затем сделайте

"2p

, Это вставит предпоследние дергавшие строки (строка 1-4). "3p сделает третье последнее, и так далее..

, Таким образом, я заканчиваю с [1 111]

line1
line2
line3
line4

Ссылка: документация Vim относительно пронумерованного регистра

5
задан Seth Johnson 5 July 2009 в 23:31
поделиться

1 ответ

Зацикливание файл неизбежно буферизует вещи довольно большими порциями - известная проблема со всеми реализациями Python 2. *. Он работает так, как вы предполагали в Python 3.1, причем последний цикл немного отличается:

for line in proc.stdout:
    print(">>> " + str(line.rstrip()))

Если обновление до Python 3.1 нецелесообразно (а я знаю, что это будет часто!), Воспользуйтесь другим путем и напишите цикл в старом - модным способом - следующая версия цикла действительно работает так, как вы предполагали в Python 2. *:

while True:
    line = proc.stdout.readline()
    if not line:
        break
    print ">>> " + line.rstrip()
14
ответ дан 18 December 2019 в 13:18
поделиться