Programdan çıkmadan önce nasıl bir işleve sahip olacaksınız? Sürekli olarak arka planda çalışacak bir komut dosyası var ve çıkmadan önce bir dosyaya bazı verileri kaydetmem gerekiyor. Bunu yapmanın standart bir yolu var mı? atexit
modül üzerindenProgram çıkışından önce bir şey yapmak
cevap
Kontrol:
Örneğinhttp://docs.python.org/library/atexit.html
Bir mesaj yazdırmak istiyorsa, başvurum sonlandırma edildi:
import atexit
def exit_handler():
print 'My application is ending!'
atexit.register(exit_handler)
Sadece bu büyük çalışır unutmayın betiğin normal olarak sonlandırılması, ancak tüm durumlarda (örneğin ölümcül dahili hatalar) çağrılmayacaktır.
Ctrl + C veya Ctrl + \ tuşlarına basarsanız, nerede çağrılacağının bir yolu var mı? – RacecaR
Ctrl + C tuşlarına basarsanız çağrılır. Bu sadece bir KeyboardInterrupt istisnasını yükseltir. –
Oh, bunu unuttum. Ve eğer birileri python sürecini doğru bir şekilde öldürürse yapabileceğiniz hiçbir şeyin işe yaramayacağını farz ediyorum. – RacecaR
Komut dosyasını bir KeyboardInterrupt
(örneğin Ctrl-C tuşlarına basarak) yükselterek durdurursanız, bunu standart bir istisna olarak yakalayabilirsiniz. SystemExit
'u da aynı şekilde yakalayabilirsiniz.
try:
...
except KeyboardInterrupt:
# clean up
raise
Bunu bildiğim kadarıyla; Bunu yapmanın 'doğru' yolu, yukarıda belirtilen atexit
modülüdür. Nihayet:
Eğer bir şey her zaman denemek, hatta hataları üzerinde, çalıştırmak kullanmak istiyorsanız böyle - Ayrıca özel durumları işlemek istiyorsanız
def main():
try:
execute_app()
finally:
handle_cleanup()
if __name__=='__main__':
main()
sen hariç bir ekleyebilirsiniz: nihayet önce:
SIGTERM, işlemin öldürülmesinden kaynaklandığında işe yaramıyor. – ramu
- 1. çağrı nihayet sistem çıkışından hemen önce
- 2. Bulmaca - Ben böyle bir şey yapmak istiyorum
- 3. Bir şey yapmadan önce javascript asp.net anypostback
- 4. ben böyle bir şey yapmak isteyeyim yüklem
- 5. nasıl böyle bir şey yapmak çalışıyorum raylar
- 6. Böyle bir şey yapmak istiyorum Açıklamalar
- 7. Görünüşte yapmak çok basit bir şey scale_brewer
- 8. PHP Sorun (ücretsiz bir şey yapmak)
- 9. Kaldırma işlemi başlamadan önce nasıl program çalıştırılır?
- 10. Sabit navbardan önce bir şey yazıyor
- 11. Bellek bitmeden hemen önce bir şey yapın
- 12. Java programı aniden çıktığında bir şey yapmak mümkün mü?
- 13. Utility benim programda böyle bir şey yapmak istiyorum java
- 14. Visual Studio çıkışından TFS
- 15. Program aracılığıyla gezinmek için uitextview kaydırma yapmak
- 16. Valgrind hata ayıklayıcısını bir program aracılığıyla adım adım yapmak
- 17. Bir Jenkins işinin konsol çıkışından arama yapın
- 18. Oprofile çıkışından nasıl bir çağrı alırım?
- 19. kullanın isinstance ben böyle bir şey yapmak nasıl Unicode dizesi
- 20. Sık sık bu tür bir şey yapmak Modern Python
- 21. Ben böyle bir şey yapmak mümkün olup olmadığını merak
- 22. __set/__ olsun o böyle bir şey yapmak mümkün olup olmadığını
- 23. ColdFusion, böyle bir şey yapmak ColdFusion 8. kullanıyorum .XLSX
- 24. Konteyner Görüntüle Kontrolörler ben böyle bir şey yapmak nerede
- 25. Bunu yapmak için daha iyi bir şey var mı?
- 26. Jquery pulsate bitirdikten sonra bir şey yapmak mümkün mü?
- 27. C++ - Ben böyle bir şey yapmak mümkün olup olmadığını merak
- 28. nasıl Grunt çıkışından tüm renk bilgisini kaldırabilirim?
- 29. Bir Adodb.recordset nesnesini hiçbir şey yapmadan önce kapatmak gerekli mi?
- 30. böyle bir şey yaptım RC1 önce filterContext.Cancel (ASP.NET MVC)
Komut dosyasını nasıl durdurursunuz? – phimuemue
Komut dosyası hiç durmamalı, ama belki de birisi işlemi sonlandırır veya Ctrl + \ veya bir şeyleri basar. – RacecaR