Rumah  >  Soal Jawab  >  teks badan

Simpan kemajuan apabila Python keluar secara tidak normal?

Masalah:
Baca teks untuk menjana senarai. list.pop() semasa program berjalan. Sekarang saya ingin bertanya sama ada saya boleh menulis semula nilai dalam senarai ke dalam teks apabila keluar secara tidak normal.
Pengecualian:
Ctrl-c, bunuh, Ctrl-z
Terima kasih!

黄舟黄舟2711 hari yang lalu1077

membalas semua(3)saya akan balas

  • PHPz

    PHPz2017-05-18 10:55:50

    Situasi luar biasa yang anda nyatakan semuanya disebabkan oleh program menerima isyarat yang sepadan dan mengambil tindakan lalai (keluar), jadi anda boleh mengelakkan program daripada keluar secara tidak normal dengan mendaftarkan isyarat dan menukar tindakan lalai .注册信号, 改变默认动作来避免程序异常退出.

    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

    Ikat tindakan isyarat yang sepadan dengan fungsi penyampai melalui isyarat di atas Selepas menerima Ctrl-c, bunuh dan Ctrl-z, pengendali boleh dilaksanakan. masing-masing. Kod untuk melaksanakannya, anda boleh menyesuaikannya Jika terdapat situasi yang tidak dijangka selain daripada isyarat ini, anda akan memutuskan langkah yang perlu diambil jika terdapat situasi lain! code>isyarat python (Sesetengah isyarat tidak boleh ditangkap, ini ditentukan oleh sistem, sila ambil perhatian)🎜

    balas
    0
  • ringa_lee

    ringa_lee2017-05-18 10:55:50

    Anda boleh cuba menangkap pengecualian dalam if utama:

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

    balas
    0
  • 怪我咯

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

    Terdapat fungsi dalam python yang dipanggil atexit, yang akan memanggil semula apabila keluar program dapat ditangkap.

    balas
    0
  • Batalbalas