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 :

comment recuperer retour os.system() en temsp reel [Python 2.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 56
    Points : 31
    Points
    31
    Par défaut comment recuperer retour os.system() en temsp reel
    Bonjour à tous,

    je vais essayer de bien expliquer ce que je veux faire par étapes:
    - avec mon programme python je lance une instruction os.system('my_command'), my command lance un logiciel qui fait un calcul numerique Nastran(peu importe son nom).

    l'execution de cette command en unix prend un peu de temps, par comsequent je voudrait suivre son avancement
    la command unix heureusement renvoie à chaque étape du déroulement du calcul des informations (comme starting, etape1 finished etape 2 finished ....)

    pour recuperer c'est information j'ai remplacé os.system(my_command) par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var = commands.getoutput('my_command')
    nickel j'ai toutes les étapes stocké dans var mais..., je veux les recuperer en temps reel et pas à la fin de l'execution. (remarque :la command ne donne la main à python qu'apres la fin de l'execution)
    comment faire ?

    Merci pour toute aide

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Avec subprocess.Popen tu devrais avoir plus facile.

    Un exemple que j'ai sous la main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    cmd = "appli -a -b -c"
    reply = subprocess.Popen(cmd, universal_newlines=True, 
                                     stdout=subprocess.PIPE, 
                                     stderr=subprocess.STDOUT,
                                     shell=True)
     
    while 1:
        text = reply.stdout.readline()[:-1]
        if type(text) != str or text == '' and reply.poll() != None:
            break
        print' > %s' % text

  3. #3
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Tu as os.popen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from os import popen
     
    cmd=popen("ma commande")
    while 1 :
        print(cmd.read(),end="")
    Voilà un petit exemple tout bête.

    EDIT : je viens de remarquer que la discussion était pour Python 2, à part le print qui se corrige facilement, je pense que ça devrait marcher mais je ne suis pas sûr
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 56
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos reponses,
    je ne sais pas pour quelle raison mais avec vos methodes ça renvoit des None (plusieurs) au lieus des messages que j'avais cité.

    remarque: quand je lance la commande sur shell unix directement les message s'affichent.

    je me demande alors si popen renvoie ce que je veux vraiment.

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    os.popen est déprécié depuis 2.6

    https://docs.python.org/2/library/os.html#os.popen

    et dans la doc Python 3 il est dit ceci:
    This is implemented using subprocess.Popen; see that class’s documentation for more powerful ways to manage and communicate with subprocesses.
    https://docs.python.org/3/library/os...popen#os.popen

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 56
    Points : 31
    Points
    31
    Par défaut
    Merci VinS ça marche finalement ton code proposé au début.
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment recuperer le path de dossiers systemes
    Par eric_vi dans le forum Qt
    Réponses: 5
    Dernier message: 13/08/2009, 17h39
  2. Recuperer le code retour de system()
    Par k6971 dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2007, 16h09
  3. [C#] Comment récupérer la valeur de retour d'une procédure stockée ?
    Par Jinroh77 dans le forum Accès aux données
    Réponses: 23
    Dernier message: 05/10/2006, 15h24
  4. Réponses: 5
    Dernier message: 29/09/2006, 17h17
  5. Réponses: 3
    Dernier message: 07/06/2006, 10h06

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