IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Récupérer le résultat de commandes shell


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut Récupérer le résultat de commandes shell
    Bonjour,

    J'ai un petit script python qui lance des commandes dans un terminal qui permet de tester si certaines lignes sont présentes dans un fichier.Ensuite je fais un test, si elles sont présentes je voudrais les supprimer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	def errorIface(self):	
    		a=commands.getoutput("tail /home/ubuntu/Desktop/glade/tmp.txt|grep 'Invalid interface name/alias: %s'" % self.parameters['ifaceSci'])
    		#c=a.read()		
    		b=commands.getoutput("tail /home/ubuntu/Desktop/glade/tmp.txt|grep 'Invalid interface name/alias: %s'" % self.parameters['ifaceCdam'])
    		#d=b.read()
    		print a,b
    		print ('------------------------------------')
    		if a!='' or b!='':
    			os.system("sed '/interface/d' /home/ubuntu/Desktop/glade/tmp.txt")
    			gladeXml.get_widget('Image_Red').show()
    			gladeXml.get_widget('Image_Green').hide()
    			gladeXml.get_widget('Image_Error').show()
    			gladeXml.get_widget('LabelErrorInterface').show()
    Le problème est que a et b sont vides du coup je ne peux pas les comparer. J'ai essayé avec la commande os.popen (ya encore les read) mais je n'y arrive pas plus.
    D'ailleurs j'ai l'impression que la commande sed ne marche pas non plus :s
    Quelqu'un pourrait aurait une idée?

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Alwik Voir le message
    D'ailleurs j'ai l'impression que la commande sed ne marche pas non plus :s
    Voilà par où commencer. Assure-toi que la commande `sed` fonctionne correctement depuis un shell.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut
    Ok la commande sed ne fais pas exactement ce que je veux, et j'ai compris pourquoi, mais le vrai problème est que je n'arrive pas à récupérer et donc à comparer les deux premiers résultats (a et b)

    edit:
    La ligne qui lance la commande sed a été modifiée comme telle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system("sed -i '/Invalid interface/d' /home/ubuntu/Desktop/glade/tmp.txt ")

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Il faut utiliser le module os, mais pas la méthode system pour récupérer les infos.

    Il te faut la méthode Popen()

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Heu, le Popen de la bibliothèque subprocess ne serait-il pas plus recommandable?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Heu, le Popen de la bibliothèque subprocess ne serait-il pas plus recommandable?
    Heu ça serait pas une question fermée ci-dessus?

    En effet, subprocess.Popen() tend à remplacer l'ancien os.Popen().

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Il faut utiliser le module os, mais pas la méthode system pour récupérer les infos.

    Il te faut la méthode Popen()
    J'ai déjà essayé (il y a encore les read en commentaire).
    Maintenant je suis en train de me plonger dans la doc de subprocess, mais ca a l'air assez complexe.
    En tout cas merci pour les conseils

    Edit: bon je n'y arrive pas plus que ça :s je ne comprends pas trop a quoi servent tous les arguments de Popen, et je ne vois pas comment je peux lui faire passer mon self.parameters['ifaceSCI'] en parametre.Quelqu'un peut m'orienter ou me donner un début de réponse?

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut
    Maintenant je suis en train de me plonger dans la doc de subprocess, mais ca a l'air assez complexe.
    Inspirez vous des exemples de Doug Hellmann
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [vb6] Récupérer les résultats d'un shell
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/06/2006, 16h57
  2. Récupérer le résultat d'une commande shell
    Par espadon1 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 10h01
  3. Réponses: 5
    Dernier message: 31/05/2006, 19h30
  4. Récupération du résultat d'une commande shell
    Par klu dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2006, 23h34
  5. Réponses: 2
    Dernier message: 02/01/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo