如何让Python暂停,以便查看输出?

2 投票
4 回答
1049 浏览
提问于 2025-04-15 19:52

我一直是Notepad2的重度用户,因为它速度快、功能丰富,还支持语法高亮。最近我开始用它来写Python代码。

我遇到的问题是:当我编辑完某个Python源代码后,尝试运行它时,屏幕上的内容在我看到输出之前就消失了。有没有什么办法可以让结果停留一下,让我能看清楚,而不需要用input()或者时间延迟的函数?否则我就得用IDLE,因为它的输出会停下来,让你有时间阅读。

(如果这个问题听起来很傻,我很抱歉,但我对Python和编程都很新手。)

4 个回答

3

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

除非你想在你的脚本中使用input()/sleep(或者其他会让程序暂停的功能),否则我觉得你需要去看看Notepad2的设置,看看它能提供什么选项。

3

你可以从命令窗口开始,比如:

c:\tmp\python>main.py

在你的脚本最后加上 raw_input()(在Python 3中用 input())可以让程序“暂停”,直到你按下回车键,但这样做其实不是个好主意。

3

如果你不想使用 raw_input()input(),你可以把你的输出(标准输出和错误输出)记录到一个文件里。

你可以使用 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()

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

撰写回答