我有一个需要很长时间才能运行的程序,我希望它能够做它需要做的事情,但是如果用户点击特定键,那么我希望循环在某一点上断。我见过的大多数问答都与这个问题有关,提示用户在循环的每次迭代中输入一些内容,但我不想这样做。我希望循环不受干扰地运行,直到它需要退出。
该脚本将在命令提示符(Windows)中作为可执行文件运行,所以我猜用户可以关闭窗口,但我希望循环在某个时刻中断。例如:
while True:
print "Doing whatever I feel like"
userinput = raw_input()
if userinput == 'q':
break
因此,这会一直打印,直到用户输入“q”,但它会在每次迭代时提示用户输入。我怎么能避免这个?
答案 0 :(得分:1)
两种可能的解决方案:
1.按Ctrl-C关闭程序。这也适用于linux
2。
while True:
for _ in range(100)
print "Doing whatever I feel like"
userinput = raw_input()
if userinput == 'q':
break
这仅询问用户每100次迭代。
答案 1 :(得分:1)
启动一个单独的线程来执行您需要执行的计算while self.flag == False
,主程序可以坐在那里等待用户输入。一旦给出用户输入,设置Thread.flag = True
,这将停止线程。等待Thread完成并加入,然后你也可以退出主程序。
答案 2 :(得分:1)
如果您不需要在特定点停留,但只是为了能够停止它,您可以使用带有KeyboardInterrupt(Ctrl-C)的try / except。
try:
while True:
print "Doing whatever I feel like"
except KeyboardInterrupt:
exit
当用户点击CTRL-C时,它将退出。
答案 3 :(得分:1)
或者这个:
import msvcrt
while True:
print "Doing whatever I feel like"
if msvcrt.kbhit(): # True if a keypress is waiting to be read.
if msvcrt.getch()=="q": # will not wait for Enter to be pressed
break
检查msvcrt。