Résultat d'une commande bash dans python
Résolu
toto5812
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
A voir également:
- Python bash
- Citizen code python avis - Accueil - Outils
- Bingo bash - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
- Python pix ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
12 réponses
Pas forcément sur un fichier (enfin c'est possible), mais bon tu utilises l'emploi supplémentaire à des fonctions comme
ouvrir le fichier
lire le fichier
traiter les lignes du fichier
copier les lignes dans le textedit
Pour récupérer simplement la sortie d'une commande on peut utiliser la méthode popen() du module os.
Ensuite il est évident qu'il est possible de rentrer cette valeur de sortie dans un Edit text de Tkinter.
ouvrir le fichier
lire le fichier
traiter les lignes du fichier
copier les lignes dans le textedit
Pour récupérer simplement la sortie d'une commande on peut utiliser la méthode popen() du module os.
sortie=os.popen("cat /dev/usbtmc0", "r").read() print sortie
Ensuite il est évident qu'il est possible de rentrer cette valeur de sortie dans un Edit text de Tkinter.
salut,
du moment où t'es sur linux tout est possible ( enfin,, presque).
essai de rediriger la sortie de ton application bash quelque part ( sur un fichier par exemple) et récuperer ( lire sur ce dernier fichier) le resultat sur ton application python s'il ya une fonction dans tkinter ou dans un autre module qui te permet de le faire.
du moment où t'es sur linux tout est possible ( enfin,, presque).
essai de rediriger la sortie de ton application bash quelque part ( sur un fichier par exemple) et récuperer ( lire sur ce dernier fichier) le resultat sur ton application python s'il ya une fonction dans tkinter ou dans un autre module qui te permet de le faire.
Ok, merci!
ça marche en console, mais je n'arrive pas à l'intégrer dans un label du genre:
sortie=os.popen("cat /dev/usbtmc0", "r").read() print sortie
ça marche en console, mais je n'arrive pas à l'intégrer dans un label du genre:
label = Tkinter.Label(self,text="print sortie", fg="red", height="2") label.grid(column=0,row=1,columnspan=5)
arf, trouvé, à force d'essayer... c'était tout bête, il fallait juste enlever les guillemets:
Bon, c'est déja pas mal... ça affiche toute la sortie:
Mais pour améliorer, serait-il possible de récupérer le nom et le modèle de l'appareil (Tektronix TDS2002b) et d'afficher un message du genre:
et si aucun appareil n'est connecté, la sortie devient:
et là j'aimerais un message du genre:
Pensez que c'est faisable simplement?
Merci
label = Tkinter.Label(self,text=print sortie, fg="red", height="2") label.grid(column=0,row=1,columnspan=5)
Bon, c'est déja pas mal... ça affiche toute la sortie:
Minor Number Manufacturer Product Serial Number 001 Tektronix TDS2002b C630058
Mais pour améliorer, serait-il possible de récupérer le nom et le modèle de l'appareil (Tektronix TDS2002b) et d'afficher un message du genre:
L'appareil Tektronix TDS2002b est correctement branché!
et si aucun appareil n'est connecté, la sortie devient:
Minor Number Manufacturer Product Serial Number
et là j'aimerais un message du genre:
Aucun appareil détecté... Vérifier le branchement et relancer le programme.
Pensez que c'est faisable simplement?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lol, oui je pense qu'il te manque quelques bases, à revoir.
Pour le coup je corrige, mais la prochaine fois fait un effort :)
Pour le coup je corrige, mais la prochaine fois fait un effort :)
sortie=os.popen("cat /dev/usbtmc0", "r").read() label = Tkinter.Label(self,text=sortie, fg="red", height="2") label.grid(column=0,row=1,columnspan=5)
merci! mais je précise que j'avais réussi à trouver tout seul! :-)
Après avoir essayé toutes les combinaisons possibles... J'avais oublié la plus simple :-)
Mais, oui, en effet c'est la toute première fois que je manipule python... J'y connais vraiment pas grand chose en fait, mais grâce aux différents exemples et à l'aide précieuse sur ce forum e sens que je vais arriver à mes fins!
Merci encore
Après avoir essayé toutes les combinaisons possibles... J'avais oublié la plus simple :-)
Mais, oui, en effet c'est la toute première fois que je manipule python... J'y connais vraiment pas grand chose en fait, mais grâce aux différents exemples et à l'aide précieuse sur ce forum e sens que je vais arriver à mes fins!
Merci encore
Donne moi en mode console le résultat de
sortie=os.popen("cat /dev/usbtmc0", "r").readlines() print sortie
Bon j'ai trouvé ce qui semble me correspondre:
ça a l'air de marcher.... Faut juste que je teste avec un appareil connecté! :-)
Mais j'en ai malheureusement pas sous la main...
status, output = getstatusoutput('cat /dev/usbtmc0') estConnecte = False if not status: for ligne in output: if ligne.find('Product') != -1: vendor = ligne.split()[1] modele = ligne.split()[2] estConnecte = True sortie= "L'appareill %s %s est bien connecté" % (vendor, modele,) if not estConnecte: sortie= "Aucun appareil detecté" label = Tkinter.Label(self,text=sortie, fg="red", height="2")
ça a l'air de marcher.... Faut juste que je teste avec un appareil connecté! :-)
Mais j'en ai malheureusement pas sous la main...
Bon je me suis créé un fichier de test qui normalement contient ce que doit afficher cat /dev/usbtmc0... je l'ai appelé a:
Et j'ai remplacé :
Mais ça affiche toujours "aucun appareil detecté"...
:-(
cat a Minor Number Manufacturer Product Serial Number 001 Tektronix TDS2002b C630058
Et j'ai remplacé :
status, output = getstatusoutput('cat a')
Mais ça affiche toujours "aucun appareil detecté"...
:-(
Je cherche ce qui coince, je comprends à peu près le principe, mais j'aurais besoin d'une précision sur ce que signifie exactement cette ligne:
notamment sur la signification du != -1
Merci
if ligne.find('Product') != -1:
notamment sur la signification du != -1
Merci
J'aime pas ce genre de notation.
En fait on cherche dans la ligne si le mot "product", qui te renvoi un numéro d'index supérieur ou égal à 0 si il est trouvé et égal à -1 si il ne le trouve pas.
On peut traduire
En fait on cherche dans la ligne si le mot "product", qui te renvoi un numéro d'index supérieur ou égal à 0 si il est trouvé et égal à -1 si il ne le trouve pas.
On peut traduire
Si le mot "Product" est dans ligne: traiter la suite
ok, ça devrait fonctionner alors, non?
Je récapitule:
mon fichier a:
mon code:
Qu'est ce qui ne va pas??
Je récapitule:
mon fichier a:
Minor Number Manufacturer Product Serial Number 001 Tektronix TDS2002b C630058
mon code:
status, output = getstatusoutput('cat a') estConnecte = False if not status: for ligne in output: if ligne.find('Product') != -1: vendor = ligne.split()[1] modele = ligne.split()[2] estConnecte = True sortie= "L'appareil %s %s est bien connecté" % (vendor, modele) if not estConnecte: sortie= "Aucun appareil detecté"
print sortie Aucun appareil détecté
Qu'est ce qui ne va pas??
getstatusoutput que je ne connais pas d'ailleurs et qui est déconseillé pour les new version de python (tu me diras os.popen est dans la même lignée) ne sert juste qu'à vérifier que ta commande existe.
Mieux vaut, c'est fortement conseillé, j'ai encore de vieilles habitudes, utiliser le module subprocess.
Voir la doc officielle, tout y est expliqué.
Mieux vaut, c'est fortement conseillé, j'ai encore de vieilles habitudes, utiliser le module subprocess.
Voir la doc officielle, tout y est expliqué.