2017-06-10 10 views
1

Ich bin nicht sicher, ob ich meine Frage richtig formulieren kann, weil ich ein Anfänger bin, aber ich werde es versuchen.Beendigung des Programms beim Beenden

Ich habe ein Python-Programm, das .pyw-Erweiterung verwendet und nach dem Töten des Programms in IDLE wird es immer noch in meinem Task-Manager angezeigt und so muss ich die Aufgabe manuell beenden, um für eine neue Wiederholung aufzuräumen . Ich bin mir nicht sicher, mit welchen Tools das .pyw-Programm angewiesen wird, sich selbst und alle seine Teile beim Beenden zu töten. Ich dachte über die folgende Codezeile am Ende des Programms zu ergänzen, aber es scheint nicht zu funktionieren (ich bin ziemlich sicher, dass die Logik fehlerhaft ist):

if sys.exit() == True: 
    os.system('TASKKILL /F /IM pythonw.exe') 

Wie wäre es dieses Problem gehen? Jede Hilfe wird sehr geschätzt.

+0

Ich nehme an, Sie verwenden Windows ('Task-Manager'), aber welche Versionen von Windows und Python? Was fängst du an und wie? Was bedeutet "das Programm in IDLE töten"? –

+0

W10, Python 2.7.13. Ich habe ein Protokollierungssystem, das Tastenbetätigungen in einer Textdatei aufzeichnet. Ich habe zuerst ein Tastendruck-Ereignis definiert und dann mit-as-Anweisung verwendet, um Protokolle in einer Datei aufzuzeichnen. Wenn ich das Programm in IDLE (oder Shell) lösche, beende ich es einfach mit dem Beenden von Python Shell. Hoffe, dass hilft, einige Ihrer Fragen zu beantworten. –

+0

Haben Sie die Datei in einen IDLE-Editor geladen und mit F5 ausgeführt? Bevor Sie das Programm beenden, wird das Programm gestoppt, wie durch das erneute Erscheinen von '>>>' nach der RESTART-Zeile angezeigt wird. Was passiert, wenn Sie stattdessen über die Befehlszeile ausführen? –

Antwort

0

Dies ist ein Build-in libary https://docs.python.org/2/library/atexit.html

import os, sys, atexit 
def ex(): 
    os.system('TASKKILL /F /IM pythonw.exe') 

atexit.register(ex) 
+0

Versuchte Ihre Methode, leider hat es das Problem nicht gelöst. Das Pythonw-Programm befindet sich nach dem Beenden von IDLE noch im Task-Manager. –

+0

suchen Sie nach dem Ende. ist es wirklich .exe? –

+0

Ja, ist es. Die seltsame Sache, die mir aufgefallen ist, ist, dass, sobald ich das Programm ausführe, es zwei Instanzen von Pythonw erstellt - man kann mit einfachem Beenden von Python Shell geschlossen werden und andere müssen im Taskmanager manuell gelöscht werden. Letzteres ist das Hauptproblem, das ich versuche zu lösen. –

Verwandte Themen