如果用户按下CTRL C或使用键盘Interupt,如何显示消息



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

Keyboard Interrupt

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

我听说过try and except,但如果我一开始就叫它,并且有人在尝试阶段按下CTRL C,它能起作用吗?

如果程序中的任何时候有人按下CTRL-C,它都不会运行程序,我该如何恢复到目前为止所做的一切,并说:

Exiting Program

自己尝试一下:

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

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

这不起作用,因为数据被保存到介于两者之间的文件中。try块不会撤消将数据保存到文件的操作。

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

这是有效的。数据只保存在最后。

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块中的原始文件名。

相关内容

  • 没有找到相关文章

最新更新