2017-04-06 6 views
1

Ich möchte ein Python-Programm von einem anderen Python-Programm starten und gleichzeitig das vorherige Programm beenden.Python, starte ein .py-Programm und beende das vorherige Programm

Hier ist, was ich getan habe:

if(self.start_button.pression==1): 
     os.system('python program_to_launch.py') 
     sys.exit() 

Das Ergebnis ist ziemlich offensichtlich, starten Sie das Programm das ‚program_to_launch.py‘ und warten, bis es Ende zu laufen.

Das Problem liegt in der While-Schleife, innerhalb des gerade gestarteten Programms. Es ist für eine unbestimmte Zeit hergestellt.

Hier ist das Problem; das vorherige Programm wartet noch das Ende des neuen Programms, und es wird der` sys.exit()

Ich könnte töten das erste Programm using`

NOTES nicht ausführen:

Nach dem method provided by this answer , ich kann nicht das Programm importieren zu starten, weil ich das erste Programm

import program_to_launch 

Also ich denke, beenden wollen, dass es keine Lösung ist. Und der Befehl exec file()

execfile('program_to_launch.py')

wie in der verknüpften Antwort vorgeschlagen, bietet es Probleme mehr Module in der Ausführung von program_to_launch.py ​​zu importieren

Antwort

0

Ich glaube, Sie nur das Programm in einem neuen starten können thread oder process:

from os import system 
from threading import Thread 
from sys import exit 

if self.start_button.pression == 1: 
    thread = Thread() 
    thread.run = lambda: system('python program_to_launch.py') 
    thread.start() 

    exit() 
+0

Leider bleiben die bisherigen Programme offen und eingefroren, ich habe die Funktion 'print ('bookmark')' benutzt, um zu sehen, wo das Programm in der Ausführung ankommt, es kommt vor dem 'exit() 'Funktion. Zumindest wenn ich das zweite Programm schließe, schließt das erste Programm es auch. – Ziru93

+0

Hinweis: Ich habe auch versucht 'sys.exit()' – Ziru93

+0

Statt os.system versuchen Sie subprocess.Popen. Es sollte auch ohne Threading funktionieren – seenorth

Verwandte Themen