为了账号安全,请及时绑定邮箱和手机立即绑定

如何用击键杀死while循环?

如何用击键杀死while循环?

米琪卡哇伊 2019-08-27 16:11:28
如何用击键杀死while循环?我正在读取串行数据并使用while循环写入csv文件。我希望用户能够在他们认为已经收集到足够的数据后杀死while循环。while True:     #do a bunch of serial stuff     #if the user presses the 'esc' or 'return' key:         break我使用opencv做了类似的事情,但它似乎没有在这个应用程序中工作(我真的不想为此函数导入opencv)...        # Listen for ESC or ENTER key         c = cv.WaitKey(7) % 0x100         if c == 27 or c == 10:             break所以。如何让用户摆脱循环?另外,我不想使用键盘中断,因为脚本需要在while循环终止后继续运行。
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

最简单的方法是用通常的Ctrl-C(SIGINT)中断它。

try:
    while True:
        do_something()except KeyboardInterrupt:
    pass

由于要引发Ctrl-C原因KeyboardInterrupt,只需将其捕获到循环外部并忽略它。


查看完整回答
反对 回复 2019-08-27
?
Qyouu

TA贡献1786条经验 获得超11个赞

有一种解决方案不需要非标准模块,并且100%可移动

import threaddef input_thread(a_list):
    raw_input()
    a_list.append(True)def do_stuff():
    a_list = []
    thread.start_new_thread(input_thread, (a_list,))
    while not a_list:
        stuff()


查看完整回答
反对 回复 2019-08-27
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

以下代码适用于我。它需要openCV(import cv2)。

该代码由一个无限循环组成,该循环不断寻找按下的键。在这种情况下,当按下'q'键时,程序结束。可以按下其他键(在此示例中为“b”或“k”)以执行不同的操作,例如更改变量值或执行功能。

import cv2while True:
    k = cv2.waitKey(1) & 0xFF
    # press 'q' to exit
    if k == ord('q'):
        break
    elif k == ord('b'):
        # change a variable / do something ...
    elif k == ord('k'):
        # change a variable / do something ...


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 444 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信