def run_cmd(self, cmd):
print cmd
status = os.system(cmd)
print 'Command ran with Status: %s' % status
if status:
s = 'Command Failed: Status: %s for %s' % (status, cmd)
print s
sys.exit(status)
else:
s = 'Command Success: %s' % cmd
return status
Ich verwende diese Funktion, um ein Python-Skript aus einem anderen Skript auszuführen.Python ein anderes Skript aus einem Python-Skript ausführen
Ex:
command_to_exec = 'python script_b.py'
run_cmd(command_to_exec)
Nun, wenn script_b.py script_a.py Ausfahrten mit dem Status versagt.
Das ist in Ordnung.
Fall 2:
command_to_exec = 'python script_a.py --options'
rum_cmd(command_to_exec)
Dieser Fall ist script_a.py Lauf 'Python script_a.py' von selbst. In diesem Fall ist das äußere script_a.py immer noch erfolgreich, wenn das neu erstellte Script script_a.py fehlschlägt, weil es den Fehler von inner script_a.py (wegen sys.exit (status))
nicht abfangen konnteNun, wie gehe ich mit dieser Situation um? (Wenn inneres script_a fehlschlägt, sollte externes script_a beendet werden)
Warum rufen Sie ganze Skripte so? Warum importieren Sie nicht das "innere" Skript oder die Teile davon, die Sie brauchen, und führen Sie diese aus? Warum nicht eine Funktion im 'inneren' Skript aufrufen? – davo36
Verwenden Sie möglicherweise Subprozess https://docs.python.org/2/library/subprocess.html#replacing-os-system – Ashish
Sie könnten 'sys.argv [0]' testen, um zu verhindern, dass Sie selbst laufen, was zu einem schrecklichen führen könnte Gabelbombe (fortlaufender Laichprozess). – cdarke