J'utilise 2 scripts distincts, Scale1.py
et Scale2.py
. Pour les exécuter j'entre sudo python Scale1.py
ou sudo python Scale2.py
depuis la ligne de commande du terminal. Je voudrais avoir une ligne dans le Scale2.py
script dans laquelle si j'appuie sur un bouton, le programme s'arrête et s'exécute Scale1.py
. Quelque chose comme ça, qui ne fonctionne pas.
if GPIO.input(23) == False:
break(sudo python Scale1.py)
os.system()
a été déprécié en faveur desubprocess
, voir stackoverflow.com/a/4256153/4212158En général, utilisez le module de sous - processus
pour les appels en ligne de commande.
Un exemple de traitement du résultat d'un appel de sous-processus;
Le sous-processus remplace plusieurs modules et fonctions plus anciens, comme os.system et os.spawn . Il fait un bon travail de désinfection des arguments, il vous protège donc de l' injection de shell .
https://docs.python.org/2/library/subprocess.html
Bien sûr, pour exécuter un deuxième script python, aucun appel CLI n'est nécessaire, vous pouvez les importer.
la source
subprocess
pourrait être mieux dans mon cas également.Vous pouvez utiliser sudo comme le suggère harry sib, mais vous devrez ajouter l'utilisateur exécutant le premier script au fichier sudoers .
La meilleure façon d'exécuter un script python à partir d'un autre script python est de l'importer. Vous devriez avoir la logique de votre script dans une méthode du deuxième script:
la source
cleanest
réponse.