如何从PyCharm中从Bash调用的Python 2.7脚本打印?

如何从PyCharm中从Bash调用的Python 2.7脚本打印?,python,bash,python-2.7,output,pycharm,Python,Bash,Python 2.7,Output,Pycharm,例如,如果我有一个python脚本test.py包含 import time print 'foo' time.sleep(5) print 'bar' time.sleep(5) #!/usr/bin/env bash python test.py 一个shell脚本run_test.sh包含 import time print 'foo' time.sleep(5) print 'bar' time.sleep(5) #!/usr/bin/env bash python t

例如,如果我有一个python脚本
test.py
包含

import time

print 'foo'
time.sleep(5)

print 'bar'
time.sleep(5)
#!/usr/bin/env bash

python test.py
一个shell脚本
run_test.sh
包含

import time

print 'foo'
time.sleep(5)

print 'bar'
time.sleep(5)
#!/usr/bin/env bash

python test.py
然后从PyCharm(2016.1)中运行后者(例如使用Run菜单项),直到整个脚本完成(大约10秒后)才打印输出


是否有办法在我的shell脚本运行时打印输出?

看起来需要显式刷新缓冲区:

import sys

print 'foo'
sys.stdout.flush()
time.sleep(5)

print 'bar'
sys.stdout.flush()
time.sleep(5)
有关每次打印后自动刷新的Python 2解决方案,请参阅

在本例中,由于您控制运行Python的bash文件,因此只需添加
-u
或设置
PYTHONUNBUFFERED=1

python-u test.py

pythonunbuffer=1 python test.py
仅就PyCharm添加以下内容:

在PyCharm中,在运行->编辑配置下设置shell脚本的运行配置,如下所示:

注意
PYTHONUNBUFFERED=1


您可能必须首先在左侧的默认值菜单下添加Bash运行配置。

是否打印('foo',flush=True)帮助?什么版本?“我根本无法复制它。@raxacoricofallapatorius:啊,Python 2,错过了,抱歉。”
import sys
在顶部,然后在每个print语句之后
sys.stdout.flush()
。将
export PYTHONUNBUFFERED=1
添加到shell脚本中?@Will:Yep,这同样有效。要么是那样,要么是
-u