如果用户按下 CTRL C 或使用 keyboardInterrupt,如何显示消息?
How to display a message if user presses CTRL C or uses keyboard Interupt?
每次我在 运行 运行程序时按 CTRL-C,它都会显示正在执行的行,然后说:
Keyboard Interrupt
但是,我正在 运行ning 一个将信息附加到文本文件的程序。如果有人在此期间按下 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块中将备份文件重命名为原始文件名。
每次我在 运行 运行程序时按 CTRL-C,它都会显示正在执行的行,然后说:
Keyboard Interrupt
但是,我正在 运行ning 一个将信息附加到文本文件的程序。如果有人在此期间按下 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块中将备份文件重命名为原始文件名。