Fortschritt speichern, wenn Python abnormal beendet wird?
黄舟
黄舟 2017-05-18 10:53:50
0
3
1136

Problem:
Text lesen, um eine Liste zu erstellen. list.pop() während das Programm läuft. Jetzt möchte ich fragen, ob ich die Werte in der Liste beim abnormalen Beenden in den Text umschreiben kann.
Ausnahme:
Strg-c, töten, Strg-z
Danke!

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

Antworte allen(3)
PHPzhong

你说的这几种异常情况, 都是程序接收到相应信号, 采取默认动作(退出)导致的, 所以可以通过注册信号, 改变默认动作来避免程序异常退出.

import signal
import time

def hander(signum, frame):
    # 接受到信号后你想做的事
    print signum, frame

signal.signal(signal.SIGTERM, hander)  # 捕获kill : SIGTERM信号
signal.signal(signal.SIGINT, hander)   # 捕获Ctrl-c: SIGTERM 信号(可以绑定不同的函数)
signal.signal(signal.SIGTSTP, hander)  # 捕获 Ctrl-z: SIGTSTP信号(可以绑定不同的函数)
while 1:
    time.sleep(1)

经过上面的signal将对应的信号动作绑定到hander函数, 在接受到Ctrl-c , kill , Ctrl-z都能分别执行handler的代码了, 至于想怎么实现, 可以自定义, 如果除了这些信号意外的情况, 得示其他情况而决定采取什么措施! 可以学习下python signal相关的知识(有个别信号无法捕获, 这是系统决定的, 需要注意)

左手右手慢动作

可以尝试在if main里捕获异常:

if __name__ == '__main__':
    try:
       main()
    except e:
       solve()
刘奇

python中有个函数叫atexit,它会在程序退出时进行回调,一般的退出都可以被捕获。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage