2016-08-13 6 views
1

Я использую простую функцию w1 (str), чтобы иногда останавливать программу и ждать ключа. Ниже приведен код.Оператор печати python не отображается при выполнении команды конвейера и тройника

файл: test.py

#!/bin/env python 

def w1(str): 
    print (str) 
    wait = raw_input() 
    return 

if __name__ == '__main__': 
    print('started..') 
    w1('press a key') 
    print('exiting..') 

Как это работает (ОК):

[email protected]:~/test] test.py 
started.. 
press a key 

exiting.. 

Но когда я бегу test.py | tee log, он не показывает ничего, и если нажать клавишу ее завершения не печатать сообщение и ждать ключа. На самом деле, проблема заключается в том, что print(str) не отображается на экране при прохождении через команду tee, и он ждал моего ключа. Как я могу показать это print(str), даже когда я запускаю его с помощью |tee?

EDIT: ok Я узнал, что python -u делает трюк. Но первоначально мой скрипт python имеет #!/bin/env python в начале скрипта, поэтому я запускаю его test.py | tee log. Я искал в сети и нашел, что я могу сделать:

[email protected]:~/test] setenv PYTHONUNBUFFERD 1 
[email protected]:~/test] $test.py | tee log 

ответ

3

Использование -u для unbuffer,

python -u test.py | tee log 

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

  • Нет связанных вопросов^_^