通过管道和tee命令运行时未显示的python print语句

时间:2016-08-13 07:36:32

标签: python tee

我使用简单的函数w1(str)来使程序停止并等待一个键。以下代码有效。

file: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..')

如何运行(ok):

ckim@stph45:~/test] test.py
started..
press a key

exiting..

但是当我运行test.py | tee log时,它并没有显示任何内容,如果我按下一个键,它就会完成不打印信息并等待密钥。实际上,问题是当通过tee命令运行并且它正在等待我的密钥时,屏幕上不显示print(str)。即使我使用print(str)运行它,如何显示此|tee

编辑:好的,我知道python -u可以解决问题。但最初我的python脚本在脚本的开头有#!/bin/env python所以我运行它test.py | tee log。我在网上搜索,发现我能做到:

ckim@stph45:~/test] setenv PYTHONUNBUFFERD 1
ckim@stph45:~/test] $test.py | tee log

1 个答案:

答案 0 :(得分:4)

使用-u取消缓冲,

python -u test.py | tee log
相关问题