Estoy usando 2 scripts separados, Scale1.py
y Scale2.py
. Para ejecutarlos entro sudo python Scale1.py
o sudo python Scale2.py
desde la línea de comando de la terminal. Me gustaría tener una línea en el Scale2.py
script en la que si presiono un botón, el programa se rompe y se ejecuta Scale1.py
. Algo como esto, que no funciona.
if GPIO.input(23) == False:
break(sudo python Scale1.py)
os.system()
ha sido depricated a favor desubprocess
, ver stackoverflow.com/a/4256153/4212158En general, use el módulo de subproceso
para llamadas de línea de comando.
Un ejemplo que procesa el resultado de una llamada de subproceso;
El subproceso reemplaza varios módulos y funciones anteriores, como os.system y os.spawn . Hace un buen trabajo al desinfectar los argumentos, por lo que lo protege de la inyección de conchas .
https://docs.python.org/2/library/subprocess.html
Por supuesto, para ejecutar un segundo script de Python no hay necesidad de una llamada CLI, puede importarlos.
fuente
subprocess
podría ser mejor en mi caso también.Puede usar sudo como sugirió harry sib, pero tendría que agregar el usuario que ejecuta el primer script al archivo sudoers .
La mejor manera de ejecutar un script de Python desde otro script de Python es importarlo. Debe tener la lógica de su script en un método en el segundo script:
fuente
cleanest
respuesta.