Lancer automatiquement IDE ?

A revoir...

L'idée

Je trouverai pratique et intéressant de pouvoir lancer automatiquement un logiciel, ici l'IDE Micropython, à la connexion de la carte Micropython ?

Comment faire, sachant que l'on est sous Gnu/Linux et que l'on sait que le répertoire /dev/ va être modifié avec ajout d'un périphérique type /dev/ttyUSB ou /dev/ttyACM (* est un numéro, 0 typiquement).

L'idée serait de détecter la modification du /dev et de lancer le logiciel à ce moment là.

Work around en ligne de commande ?

Sous Gnu/Linux pour détecter le changement d'un répertoire, on dispose de inotify :

En python : pyinotify :

Plus de doc :

Etaussi :

Solution en Python ?

En fait, il n'est probablement pas très difficile d'obtenir ce comportement avec un code Python qui s'exécuterait au lancement.

Par exemple, ce code fait le job :

# X. H. - www.micropython.fr

import time

yetDetected=os.listdir("/dev/")
print(yetDetected)

# fonction principale 
def main():

    global yetDetected

    actualContent=os.listdir("/dev/")

    newDetected=[el for el in actualContent if el not in yetDetected] # extrait nouvel element

    if len(newDetected)>0 : # si on a une nouvelle détection 

        print(newDetected)

        yetDetected=actualContent


        cmd=["python3","/chemin/app/a/lancer"]
        p=subprocess.run(cmd)   

    time.sleep(1)
    main() # rappel auto



#--- obligatoire pour rendre code exécutable --- 
if __name__ == "__main__": # cette condition est vraie si le fichier est le programme exécuté
    main()# appelle la fonction principale

A noter qu'un appel de subprocess depuis le logiciel ainsi lancé crée une erreur. Mais sinon, çà fonctionne.