【问题标题】:custom output when control-c is used to exit python script使用 control-c 退出 python 脚本时的自定义输出
【发布时间】:2016-01-14 08:33:15
【问题描述】:

我希望用户使用 control-c 来关闭脚本,但是当按下 control-c 时,它会显示错误和关闭原因(这是有道理的)。有没有办法让我自己的自定义输出到屏幕而不是显示的内容?不确定如何处理该特定错误。

【问题讨论】:

标签: python error-handling


【解决方案1】:

您可以使用try..except 来捕获键盘中断:

import time

def main():
    time.sleep(10)

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('bye')

【讨论】:

    【解决方案2】:

    使用signal module 为 SIGINT 信号定义处理程序:

    import signal
    import sys
    
    def sigint_handler(signal_number, stack_frame):
        print('caught SIGINT, exiting')
        sys.exit(-1)
    
    signal.signal(signal.SIGINT, sigint_handler)
    raw_input('waiting...')
    

    【讨论】:

      【解决方案3】:

      对于通用代码,处理 KeyboardInterrupt 就足够了。对于高级代码,例如线程,这是一个完全不同的故事。这是一个简单的例子。

      http://docs.python.org/2/library/exceptions.html#exceptions.KeyboardInterrupt

      try:
          while 1:
              x = raw_input("Type something or press CTRL+C to end: ")
              print repr(x)
      except KeyboardInterrupt:
          print "\nWe're done here."
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-24
        • 2017-07-31
        • 1970-01-01
        • 2022-08-19
        • 1970-01-01
        • 2012-08-23
        • 2011-09-16
        相关资源
        最近更新 更多