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

wxPython Discussion :

Récupérer la sortie d'une commande


Sujet :

wxPython

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [Résolu] Récupérer la sortie d'une commande
    Bonjour,

    Je débute sous python et je souhaite récupérer le flot de sortie d'une commande externe dans un LogMessage.
    J'essaie avec os.popen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    handle = os.popen(command,'r')
            for line in handle:
                wx.LogMessage(line)
            handle.close
    Mais la sortie ne peut etre lue qu'à la fin de l'execution.

    Merci d'avance pour toute suggestion

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ce n'est pas un problème de wxWidgets, mais de Python.
    Pourquoi ne pas utiliser un pipe nommé pour cela ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci de la réponse,

    J'ai regardé du coté des pipes, le bout de code ci-dessous capture bien la sortie, je peux l'imprimer sur une console. Par contre, ça ne s'imprime pas sur ma fenetre de log.
    Est-ce que je dois rafraichir cette fenetre?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    pipe = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
            while pipe.poll() is None:
    # cette ligne ne fait rien
                wx.LogMessage(pipe.stdout.readline())
    # cette ligne imprime la sortie
                print pipe.stdout.readline()

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ce genre de problèmes est traité dans http://wiki.wxpython.org/index.cgi/LongRunningTasks

    Pour mon code, j'ai choisis d'utiliser wx.Yield() dans ma boucle de lecture.
    Et ça s'imprime dans la fenêtre de log

Discussions similaires

  1. Récupérer la sortie d'une commande dans page html
    Par shell13010 dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 19/04/2010, 18h13
  2. récupérer la sortie d'une commande shell
    Par Hypnocrate dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2009, 15h46
  3. [Free Pascal] [Linux] Récupérer la sortie d'une commande
    Par tintin22 dans le forum Free Pascal
    Réponses: 2
    Dernier message: 10/06/2007, 20h42
  4. Réponses: 5
    Dernier message: 16/03/2007, 12h16
  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