Я использую простую функцию 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