Maison  >  Questions et réponses  >  le corps du texte

Enregistrer la progression lorsque Python se ferme anormalement ?

Problème : 
Lire du texte pour générer une liste. list.pop() pendant l'exécution du programme. Maintenant, je veux demander si je peux réécrire les valeurs de la liste dans le texte en sortant anormalement.
Exception :
Ctrl-c, tuer, Ctrl-z
Merci !

黄舟黄舟2711 Il y a quelques jours1081

répondre à tous(3)je répondrai

  • PHPz

    PHPz2017-05-18 10:55:50

    Les situations anormales que vous avez mentionnées sont toutes causées par le programme recevant le signal correspondant et effectuant l'action par défaut (sortie), vous pouvez donc éviter que le programme ne se termine anormalement en enregistrant le signal et en modifiant l'action par défaut .注册信号, 改变默认动作来避免程序异常退出.

    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 rrreee

    Liez l'action de signal correspondante à la fonction hander via le signal ci-dessus Après avoir reçu Ctrl-c, kill et Ctrl-z, le handler peut être exécuté. respectivement. Le code de . Quant à la façon de l'implémenter, vous pouvez le personnaliser. S'il y a des situations inattendues autres que ces signaux, vous déciderez des mesures à prendre s'il y a d'autres situations. code>signal python (Certains signaux ne peuvent pas être capturés, ceci est déterminé par le système, veuillez faire attention)🎜

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-18 10:55:50

    Vous pouvez essayer d'attraper l'exception dans if main :

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

    répondre
    0
  • 怪我咯

    怪我咯2017-05-18 10:55:50

    Il existe une fonction en Python appelée atexit, qui rappelle lorsque le programme se termine. Les sorties générales peuvent être capturées.

    répondre
    0
  • Annulerrépondre