2017-10-16 2 views
0

En essayant de verrouiller le volume du sonos en utilisant SoCo dans une application web. Je dois lancer un script séparé pour le faire. Ainsi, lorsque l'utilisateur appuie sur le bouton de verrouillage, il exécute une boucle qui règle constamment le volume sur la valeur jusqu'à ce que le programme soit appelé ou basculé pour l'arrêter. J'ai besoin de cela fait dans un script différent, comme si c'est dans le code principal, je suis incapable d'obtenir une entrée de l'utilisateur pour le déverrouiller.Python exécute un programme python externe

@app.route("/lock") 
def lock(): 
    run(togglelock.py) 
    return "ok" 

#togglelock.py 
toggle("F","T") 
sound1 = (sonos.volume) 
if toggle == "T": 
sonos1.volume = sound1 
else: 
    break 
+2

'run (togglelock.py)' => 'run (" togglelock.py ")'? –

+0

Exécuter et bascule ne sont pas des commandes donc les guillemets n'ont pas vraiment d'importance. – mRyan

Répondre

0

Tant que l'autre fichier python se trouve dans le même répertoire, vous pouvez simplement l'importer lorsque vous voulez l'exécuter.

def lock(): 
import togglelock 
return "ok" 
#do more stuff.... 
+0

Puis-je exécuter le script séparément en dehors du script principal car il n'est pas possible de sortir de la boucle while créée. Comme il entre dans la boucle while, le spamming définit le volume sur X et comme c'est maintenant le seul qui exécute cette partie du code ne vérifiant pas la webapp si le bouton a été pressé pour l'éteindre. – mRyan

+0

Il semble que ce que vous voulez faire nécessiterait une autre instance de python. Je ne pense pas qu'il soit possible d'exécuter deux scripts en parallèle comme ça. Il y a peut-être un moyen d'ajouter une sorte de "écouteur d'événement", mais cela peut ne pas être trivial. – SuperStew