У меня проблема с чтением из стандартного ввода или канала в Python, когда канал из "открытого" (не знаю правильное имя)
файл.
у меня в качестве примера
pipetest.py:
import sys
import time
k = 0
try:
for line in sys.stdin:
k = k + 1
print line
except KeyboardInterrupt:
sys.stdout.flush()
pass
print k
Я запускаю программу с продолжением вывода и Ctrl + c через некоторое время
$ ping 127.0.0.1 | python pipetest.py
^C0
Я не получаю вывод.
Но если я иду через обычный файл, он работает.
$ ping 127.0.0.1 > testfile.txt
это заканчивается Ctrl + c через короткое время
$ cat testfile.txt | python pipetest.py
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.015 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.014 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.012 ms
--- 127.0.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.012/0.014/0.017/0.003 ms
10
Как мне получить какой-либо вывод до завершения программы, в этом случае ping закончился?