我正在运行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
Run Code Online (Sandbox Code Playgroud)
如果你会注意到,报表打印等START,Graph:,hall ['fall'],多达Queue Before = deque([])所有我的代码的功能部分内发生.所有这些之后应出现错误消息.
这是由 PyCharm 混合来自 stdout 和 stderr 的打印语句引起的。如果将以下行添加到idea.properties文件中,则可以修复此问题:
output.reader.blocking.mode=true
Run Code Online (Sandbox Code Playgroud)
idea.properties通过帮助|访问 编辑自定义属性。
我是 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)
'''
Run Code Online (Sandbox Code Playgroud)