正确的方法来暂停Python程序
我一直在使用input函数来暂停我的脚本
print("something") wait = input("PRESS ENTER TO CONTINUE.") print("something")
有没有正式的方法来做到这一点?
对我来说似乎很好(或Python 2.X中的raw_input()
)。 或者,如果你想暂停一定的秒数,你可以使用time.sleep()
。
import time print("something") time.sleep(5.5) # pause 5.5 seconds print("something")
我假设你想暂停而没有input
使用
time.sleep(秒)
使用:
import os os.system("pause")
所以,我发现这在我的编码工作中工作得非常好。 我只是在我的程序开始时创build了一个函数 ,
def pause(): programPause = raw_input("Press the <ENTER> key to continue...")
现在我可以使用pause()
函数,只要我需要,就像我正在写一个batch file。 例如 ,在这样的程序中:
import os import system def pause(): programPause = raw_input("Press the <ENTER> key to continue...") print("Think about what you ate for dinner last night...") pause()
现在显然这个程序没有目标,仅仅是为了举例,但你可以明白我的意思。
注:对于Python 3,您将需要使用input
,而不是raw_input
正如mhawke和steveha的评论所指出的那样,这个确切问题的最好答案是:
对于长文本块,最好在Python 2.x中使用
input('Press <ENTER> to continue')
(或raw_input('Press <ENTER> to continue')
)来提示用户,而不是时间延迟。 快速读者不希望等待延迟,慢读者可能需要更多的时间延迟,有人可能会在阅读中断,并希望有更多的时间,等等。而且,如果有人使用该程序很多,他/她可能会习惯于如何工作,甚至不需要阅读长文本。 让用户控制文本块显示多长时间才能阅读。
我有一个类似的问题,我正在使用信号:
import signal def signal_handler(signal_number, frame): print "Proceed ..." signal.signal(signal.SIGINT, signal_handler) signal.pause()
所以你注册信号SIGINT的处理程序,并暂停等待任何信号。 现在从你的程序之外(例如在bash中),你可以运行kill -2 <python_pid>
,它会发送信号2(即SIGINT)到你的python程序。 您的程序将调用您的注册处理程序并继续运行。
很简单:
raw_input("Press Enter to continue ...") exit()
我认为停止执行的最好方法是time.sleep()函数。 如果只需要在某些情况下暂停执行,则可以简单地实现如下的if语句:
if somethinghappen: time.sleep(seconds)
你可以把else分支留空。