Я выполняю следующее python
сценарий piped
кому: tee
команда
#!/usr/bin/python
from sys import exit,exc_info
from time import sleep
try:
print "hello"
#raise KeyboardInterrupt
while True:
print "hello"
sleep(1)
except KeyboardInterrupt:
print "Key board Interrupt"
exit(0)
Скажем, я сохранил это в file.py
Теперь, если я выполняюсь:
./file.py | tee somefile
Теперь нажмите Ctrl+C
, заметьте, что ничто не печатается в somefile
и stdout
При нормальном выполнении:
./file.py
На Ctrl+C
:
hello
hello
^CKey board Interrupt
Также перенаправление файла хорошо работает. Что случилось с tee
Ничто не неправильно с tee
. Буферный вывод Python, если это обнаруживает, это не пишет в TTY. См. этот Unix & сообщение Linux . Используйте sys.stdout.flush()
для принуждения сбрасывания буфера.
Вы также можете использовать этот способ:
python -u file.py | tee somefile
Эта проблема упоминается в stackoverflow