如何让Python暂停,以便查看输出?
我一直是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.stdout
和 sys.stderr
。
如果你想记录错误信息和它们的调用堆栈,我建议你结合使用 logging
和 traceback
。
可能像这样:
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())
这里有一个重定向 stdout
和 stderr
的例子:
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()
我要指出的是,这并不是最简单或最直接的方法。