Python 2.7 中的代码退出问题

Code exiting issue in Python 2.7

我正在研究 ROS,我在 Python 2.7 中编写了代码,在菜单中我要求用户 select 选择选项 1 或选项 2。任务完成后,当我按 Ctrl+c,而不是退出代码,它再次显示菜单,而不是退出。在这里,如果我在 1 或 2 之间选择,它会一次又一次地打印菜单。

为了在我按下 Ctrl+c 时立即退出代码而不是一次又一次地显示菜单,会建议对代码进行哪些更改?

问题代码和截图如下:

if __name__=='__main__':    
  while(True):  
    try:
        print "***********"
        print "1. Continuous"
        print "2. Single Step"
        print "***********"
        try:
            choice = int(raw_input('Choose a number between 1 & 2: '))
            number = choice
            move_group_python_interface()

        except ValueError:
            print "ERROR! Choose a number between 1 and 2"

    except rospy.ROSInterruptException:
    break

不看move_group_python_interface()很难说

检查您的错误屏幕截图(将来,将错误文本包含在问题中),当 move_group_python_interface() 被触发时,您正在点击 ^C 作为流程的一部分。

如果 move_group_python_interface() 需要启动一个新进程,则您退出了该进程。

尝试点击 ^C 作为菜单流程的一部分。它似乎对我来说很好。

如果您对如何捕获感到好奇^C并做出相应的回应

看看这个

if __name__=='__main__':
  while(True):
    try:
        print "***********"
        print "1. Continuous"
        print "2. Single Step"
        print "***********"
        try:
            choice = int(raw_input('Choose a number between 1 & 2: '))
            number = choice
            move_group_python_interface()

        except ValueError:
            print "ERROR! Choose a number between 1 and 2"
    except KeyboardInterrupt:
        print "Bye bye"
        break

执行时打印

bash > python infloop.py
***********
1. Continuous
2. Single Step
***********
Choose a number between 1 & 2: ^CBye bye

(抱歉,我没有 ROS)

我发现了问题。问题出在 while(True):。一旦我将其注释掉,它就会毫无问题地退出。