当 运行 通过管道和 tee 命令时,python 打印语句未显示
a python print statement not shown when run through pipeline and tee command
我使用简单的函数 w1(str) 有时会使程序停止并等待按键。下面的代码有效。
文件: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..')
如何 运行s(好的):
ckim@stph45:~/test] test.py
started..
press a key
exiting..
但是当我 运行 test.py | tee log
时,它不显示任何内容,如果我按下一个键,它就不会打印消息并等待键完成。实际上,问题是当通过 tee 命令 运行 时 print(str)
没有显示在屏幕上,它正在等待我的密钥。即使我使用 |tee
运行 时,如何使 print(str)
显示?
编辑:好的,我了解到 python -u
可以解决问题。但最初我的 python 脚本在脚本的开头有 #!/bin/env python
,所以我 运行 它 test.py | tee log
。我在网上搜索了一下,发现我可以做到:
ckim@stph45:~/test] setenv PYTHONUNBUFFERD 1
ckim@stph45:~/test] $test.py | tee log
使用-u
取消缓冲,
python -u test.py | tee log
我使用简单的函数 w1(str) 有时会使程序停止并等待按键。下面的代码有效。
文件: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..')
如何 运行s(好的):
ckim@stph45:~/test] test.py
started..
press a key
exiting..
但是当我 运行 test.py | tee log
时,它不显示任何内容,如果我按下一个键,它就不会打印消息并等待键完成。实际上,问题是当通过 tee 命令 运行 时 print(str)
没有显示在屏幕上,它正在等待我的密钥。即使我使用 |tee
运行 时,如何使 print(str)
显示?
编辑:好的,我了解到 python -u
可以解决问题。但最初我的 python 脚本在脚本的开头有 #!/bin/env python
,所以我 运行 它 test.py | tee log
。我在网上搜索了一下,发现我可以做到:
ckim@stph45:~/test] setenv PYTHONUNBUFFERD 1
ckim@stph45:~/test] $test.py | tee log
使用-u
取消缓冲,
python -u test.py | tee log