Ich verwende 2 separate Skripte Scale1.py
und Scale2.py
. Um sie auszuführen, gebe ich sudo python Scale1.py
oder sudo python Scale2.py
von der Terminal-Befehlszeile aus ein. Ich hätte gerne eine Zeile im Scale2.py
Skript, in der das Programm auf Knopfdruck abbricht und ausgeführt wird Scale1.py
. So etwas funktioniert nicht.
if GPIO.input(23) == False:
break(sudo python Scale1.py)
os.system()
wurde zugunsten von verunglimpftsubprocess
, siehe stackoverflow.com/a/4256153/4212158In der Regel verwenden die Subprozess Modul
für Kommandozeilenaufrufe.
Ein Beispiel für die Verarbeitung des Ergebnisses eines Unterprozessaufrufs.
Der Unterprozess ersetzt mehrere ältere Module und Funktionen wie os.system und os.spawn . Es leistet gute Arbeit bei der Bereinigung von Argumenten und schützt Sie vor der Injektion von Schalen .
https://docs.python.org/2/library/subprocess.html
Um ein zweites Python-Skript auszuführen, ist natürlich kein CLI-Aufruf erforderlich. Sie können diese importieren.
quelle
subprocess
es in meinem Fall auch besser sein könnte.Sie können sudo wie von harry sib vorgeschlagen verwenden, müssen jedoch den Benutzer, der das erste Skript ausführt , zur sudoers-Datei hinzufügen .
Die beste Möglichkeit, ein Python-Skript von einem anderen Python-Skript aus auszuführen, besteht darin, es zu importieren. Sie sollten die Logik Ihres Skripts in einer Methode im zweiten Skript haben:
quelle
cleanest
Antwort sein.