Что случилось с командой мишени?

Я выполняю следующее 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

0
задан 11 February 2016 в 09:40

2 ответа

Ничто не неправильно с tee. Буферный вывод Python, если это обнаруживает, это не пишет в TTY. См. этот Unix & сообщение Linux . Используйте sys.stdout.flush() для принуждения сбрасывания буфера.

4
ответ дан 29 September 2019 в 12:22

Вы также можете использовать этот способ:

python -u file.py | tee somefile

Эта проблема упоминается в stackoverflow

0
ответ дан 23 April 2020 в 19:59

Другие вопросы по тегам:

Похожие вопросы: