例如,如果我有一个包含
的python脚本test.py
import time
print 'foo'
time.sleep(5)
print 'bar'
time.sleep(5)
和包含
的shell脚本run_test.sh
#!/usr/bin/env bash
python test.py
然后在PyCharm(2016.1)中运行后者(例如使用“运行”菜单项),直到整个脚本完成(大约10秒钟后)才打印输出。
有没有办法在我的shell脚本运行时打印输出?
答案 0 :(得分:4)
看起来你需要显式刷新缓冲区:
import sys
print 'foo'
sys.stdout.flush()
time.sleep(5)
print 'bar'
sys.stdout.flush()
time.sleep(5)
请参阅Disable output buffering了解每次打印后自动刷新的Python 2解决方案。
在您的情况下,由于您控制运行Python的bash文件,只需添加-u
或设置PYTHONUNBUFFERED=1
:
python -u test.py
或
PYTHONUNBUFFERED=1 python test.py
答案 1 :(得分:1)
就PyCharm添加@MartijnPieters' answer:
在PyCharm中,在运行 - > 编辑配置下设置shell脚本的运行配置,如下所示:
请注意PYTHONUNBUFFERED=1
。
您可能需要先在左侧的默认值菜单下添加Bash运行配置。