2013-06-06 2 views
0

Это очень странно, что «tee» не работает для скриптов python. У меня есть программа под названием «test.py» и попытка вывода на терминал и в файл журнала с использованием команд оболочки. Я попыталсяПеренаправление на программу Python на терминал и файл

$python test.py | tee -a result.txt 
$python test.py | tee result.txt 
$python test.py | >> result.txt 
$ (python test.py) | tee -a result.txt 

Это просто не работает. Я не хочу ничего менять в своей программе, потому что есть более 200 заявлений печати.

Заранее спасибо.

+3

Что вы имеете в виду «это просто не работает»? – Blender

+0

Как генерируется сценарий? –

+0

Ваши линии 1, 2 и 4 отлично работают на моем конце, так что вам нужно быть более конкретными. – kqr

ответ

1

С @kqr ниже, запустите его в режиме небуферизованном:

python -u test.py | tee result.txt 
+0

Делает то же самое. Для отображения на терминале может потребоваться около 30-40 секунд, сразу же сбросив 100 команд. – user2452845

+0

@ user2452845 Звучит так, как будто ваша программа ждет некоторое время, а затем промывает вывод. Вы можете попробовать перфорировать его с помощью команд 'stdout.flush()', но это звучит как логическая проблема, а не проблема буферизации. Не могу сказать, не видя никакого кода. – U2EF1

+0

Я подозреваю, что Python автоматически обнаруживает, что он запускается неинтерактивно (в трубе) и применяет некоторую тяжелую буферизацию для большей производительности. [Это может помочь.] (Http://stackoverflow.com/questions/107705/python-output-buffering) – kqr

Смежные вопросы