关于python:如果用户按下CTRL C或使用键盘中断,如何显示消息?

How to display a message if user presses CTRL C or uses keyboard Interupt?

本问题已经有最佳答案,请猛点这里访问。

每当我运行程序时按CTRL-C,它会显示它正在执行的行,然后说:

1
Keyboard Interrupt

但是,我正在运行一个程序,将信息附加到文本文件。 有人按下CTRL-C,它只会附加代码在被中断之前要做的事情。

我听说过try and except,但是如果我在开始时调用它并且有人在尝试阶段按下CTRL C,那么它是否有效?

我怎么做到这样,如果在程序中任何时候有人按下CTRL-C它将不会运行该程序,还原它到目前为止所做的一切,并说:

1
Exiting Program


亲自尝试一下:

这是有效的(如果代码在您的机器上执行得太快,则在for循环迭代器中添加零):

1
2
3
4
5
6
7
8
9
10
a = 0

try:
    for i in range(1000000):
        a = a + 1
except (KeyboardInterrupt, SystemExit):
    print a
    raise

print a

这不起作用,因为数据保存在其间的文件中。 try块不会撤消将数据保存到文件中。

1
2
3
4
5
6
7
8
9
10
11
a = 0

try:
    for i in range(1000000):
        if a == 100:
            with open("d:/temp/python.txt","w") as file:
                file.write(str(a))

        a = a + 1
except (KeyboardInterrupt, SystemExit):
    raise

这有效。 数据仅保存在最后。

1
2
3
4
5
6
7
8
9
10
a = 0

try:
    for i in range(1000000):
        a = a + 1
except (KeyboardInterrupt, SystemExit):
    raise

with open("d:/temp/python.txt","w") as file:
    file.write(str(a))

因此,在try块中准备信息并在之后保存。

另一种可能性:使用原始数据保存临时备份文件,并将备份文件重命名为except块中的原始文件名。