Używam 2 oddzielnych skryptów Scale1.py
i Scale2.py
. Aby je uruchomić, wchodzę sudo python Scale1.py
lub sudo python Scale2.py
z linii poleceń terminala. Chciałbym mieć wiersz w Scale2.py
skrypcie, w którym po naciśnięciu przycisku program się zepsuje i uruchomi Scale1.py
. Coś takiego, co nie działa.
if GPIO.input(23) == False:
break(sudo python Scale1.py)
os.system()
został deprecjonowany na korzyśćsubprocess
, patrz stackoverflow.com/a/4256153/4212158Ogólnie używaj modułu podprocesu
do wywołań z linii poleceń.
Przykład przetwarzania wyniku wywołania podprocesu;
Podproces zastępuje kilka starszych modułów i funkcji, takich jak os.system i os.spawn . Dobrze sprawdza się w odkażaniu argumentów, więc chroni cię przed wstrzyknięciem powłoki .
https://docs.python.org/2/library/subprocess.html
Oczywiście, aby uruchomić drugi skrypt Pythona, nie ma potrzeby wywoływania CLI, możesz je zaimportować.
źródło
subprocess
może być też lepiej w moim przypadku.Możesz użyć sudo, jak sugeruje harry sib, ale musisz dodać użytkownika uruchamiającego pierwszy skrypt do pliku sudoers .
Najlepszym sposobem na uruchomienie skryptu Python z innego skryptu Python jest jego zaimportowanie. Powinieneś mieć logikę swojego skryptu w metodzie w drugim skrypcie:
źródło
cleanest
odpowiedź.