在bash上运行python脚本时,如何抑制KeyboardInterrupt输出?

时间:2019-05-08 03:07:32

标签: python bash

我决定从bash终端提示符下运行python脚本,例如正在运行$ python my_script.py

然后,我决定按Ctrl-C杀死该活动进程。

然后,该进程终止,并且终端出现一些输出错误,该错误可能类似于:

^C
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
KeyboardInterrupt

如何使用Ctrl-C静止时抑制bash /终端端的输出。

this comment中我了解到您可以使用Ctrl-\退出该过程,这显然与Ctrl-C不同。似乎抑制了任何输出。

但是,如果我只运行$ python并在交互式python shell中运行一些代码,则使用Ctrl-\会完全退出Python shell进程,而Ctrl-C只会杀死我的代码刚刚执行(就像for循环一样),但是保留了Python shell进程。

2 个答案:

答案 0 :(得分:1)

由于您正在使用bash,因此可以执行python script.py 2>/dev/null

2 表示它将 stderr 发送到特殊文件 / dev / null ,该文件始终为空,此脚本现在将发送到该文件其输出到。

如果您没有 2 ,它将抑制标准输出(即 stdout ),但不会出错。

如果您想同时抑制两者,则可以执行> /dev/null 2>&1,因为1是stdout,而stdout现在被路由到devnull。

本质上,您是将错误回溯发送到空白文件,而不是发送到标准stderr位置(您的屏幕)。

答案 1 :(得分:0)

您可以使用try-except块:
在下面的代码中,我仅以打印一些数字为例,将其替换为您的代码:


import sys
try:
    # your code
    for i in range(1000000):
        print(i)

except KeyboardInterrupt:
    sys.exit(0)