如何使Python等待以便您可以读取输出?

时间:2010-03-01 15:00:08

标签: python ide

我一直是Notepad2的重要用户,因为它快速,功能丰富,并支持语法高亮。最近我一直用它来做Python。

我的问题:当我完成编辑某个Python源代码并尝试启动它时,屏幕会在我看到输出弹出之前消失。我有没有办法让结果等待,以便我可以读取它,而不是使用输入()或延时功能?否则我必须使用IDLE,因为输出停止让你阅读。

我很抱歉,如果这个问题很愚蠢,但我对Python和编程非常陌生。

4 个答案:

答案 0 :(得分:3)

你可以在命令窗口中启动。 e.g:

c:\tmp\python>main.py

在脚本末尾添加raw_input()(或py3k中的input())会让你冻结直到输入被按下,但这不是一件好事做。

答案 1 :(得分:3)

这是Notepad2的“问题”,而不是Python本身。

除非您想在脚本中使用input()/ sleep(或任何其他阻止函数),否则我认为您必须转到Notepad2中的设置并查看它提供的内容。

答案 2 :(得分:3)

如果您不想使用raw_input()input(),可以将输出(stdout,stderr)记录到一个或多个文件中。

您可以使用logging模块,也可以只重定向sys.stdoutsys.stderr

如果您想使用跟踪堆栈记录错误,我建议您使用loggingtraceback的组合。

这样的事情可能是:

import logging, traceback
logging.basicConfig(filename=r'C:\Temp\log.txt', level=logging.DEBUG)

try:
    #do some stuff
    logging.debug('I did some stuff!')
except SomeException:
    logging.error(traceback.format_exc())

以下是重定向stdoutstderr的示例:

if __name__ == '__main__':
    save_out = sys.stdout  # save the original stdout so you can put it back later
    out_file = open(r'C:\Temp\out.txt', 'w')
    sys.stdout = out_file

    save_err = sys.stderr
    err_file = open(r'C:\Temp\err.txt', 'w')
    sys.stderr = err_file

    main()  #call your main function

    sys.stdout = save_out  # set stdout back to it's original object
    sys.stderr = save_err

    out_file.close()
    err_file.close()

我要指出这不是最简单或最直接的方式。

答案 3 :(得分:0)

您可以在脚本末尾添加对raw_input()的调用,以使其等到您按Enter键。