如何从PyCharm中从Bash调用的Python 2.7脚本打印?
例如,如果我有一个python脚本如何从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
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
。