PyCharm输出错误消息穿插在控制台输出中.如何解决这个问题?

new*_*bie 19 python pycharm

我正在运行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([])所有我的代码的功能部分内发生.所有这些之后应出现错误消息.

Sau*_*aul 5

这是由 PyCharm 混合来自 stdout 和 stderr 的打印语句引起的。如果将以下行添加到idea.properties文件中,则可以修复此问题:

output.reader.blocking.mode=true
Run Code Online (Sandbox Code Playgroud)

idea.properties通过帮助|访问 编辑自定义属性。


alj*_*gom 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)
'''
Run Code Online (Sandbox Code Playgroud)