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

时间:2016-07-16 13:07:34

标签: python bash python-2.7 output pycharm

例如,如果我有一个包含

的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脚本运行时打印输出?

2 个答案:

答案 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脚本的运行配置,如下所示:

enter image description here

请注意PYTHONUNBUFFERED=1

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