我一直是Notepad2的重要用户,因为它快速,功能丰富,并支持语法高亮。最近我一直用它来做Python。
我的问题:当我完成编辑某个Python源代码并尝试启动它时,屏幕会在我看到输出弹出之前消失。我有没有办法让结果等待,以便我可以读取它,而不是使用输入()或延时功能?否则我必须使用IDLE,因为输出停止让你阅读。
(我很抱歉,如果这个问题很愚蠢,但我对Python和编程非常陌生。)
答案 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.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()
我要指出这不是最简单或最直接的方式。
答案 3 :(得分:0)
您可以在脚本末尾添加对raw_input()
的调用,以使其等到您按Enter键。