我正在运行PyCharm Community Edition 4.0.4
有没有人知道为什么在控制台输出后错误消息不会显示?
由于
C:\Python27\python.exe "F:/Google Drive/code/python_scripts/leetcode/lc_127_word_ladder.py"
Traceback (most recent call last):
START
File "F:/Google Drive/code/python_scripts/leetcode/lc_127_word_ladder.py", line 68, in <module>
print sol.ladderLength('talk', 'tail', set)
Graph:
File "F:/Google Drive/code/python_scripts/leetcode/lc_127_word_ladder.py", line 54, in ladderLength
hall ['fall']
for item in graph[node[0]]:
fall ['hall']
KeyError: 'talk'
End Graph:
Visited = {'talk': 0}
Node = ['talk', 0]
Queue Before = deque([])
Process finished with exit code 1
如果您注意到,打印语句(例如START
,Graph:
,hall ['fall']
,最多Queue Before = deque([])
都会发生在我的代码的正常运行部分。所有这些之后都应出现错误消息。
答案 0 :(得分:2)
可能只是标准输出问题。
一种解决方法是在打印语句后使用sys.flush.stdout()。
import sys
do_something()
print("Your print statement")
sys.stdout.flush()
答案 1 :(得分:2)
这是由于PyCharm混合了stdout和stderr中的打印语句而引起的。如果将以下行添加到idea.properties
文件中,则可以解决此问题:
output.reader.blocking.mode=true
通过帮助|转到idea.properties
|编辑自定义属性。
答案 2 :(得分:0)
我是pycharm的新手,所以不确定是否有一个干净的方法来做到这一点。但作为一种解决方法,您可以使用在打印后快速睡眠的自定义打印功能替换打印功能,然后在输出后显示回溯。
import time
print = (lambda p: lambda *args,**kwargs: [p(*args,**kwargs), time.sleep(.01)])(print)
'''
# the above is just a one liner equivalent to this decorator
def add_sleep(p):
def new_p(*args, **kwargs):
p(*args,**kwargs)
time.sleep(.01)
return new_p
print = add_sleep(print)
'''