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 :

manipuler stdout et stderr


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Par défaut manipuler stdout et stderr
    bonjour,

    je voudrais savoir comment manipuler stdout et stderr.

    par exemple,
    disons que je veuille executer un module externe
    qui genere de l'affichage (dans stdout et/ou stderr).
    j'aimerai rediriger, ou bien dupliquer cet affichage ailleurs,
    pendant son execution, puis le restaurer ensuite.

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut
    qu'entends-tu par module externe ? une appli ?

    tu peux faire un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #-*- coding:Utf-8 -*-
    from subprocess import Popen 
     
    fichierSortie = open('monFichierDeSortie.log', 'a+')#on ouvre et on écrit à la fin du fichier
    ps = Popen(['chemin/vers/mon/appli', 'Arguments' ], stdout=fichierSortie, stderr=fichierSortie)
    ps.communicate()#on lance la commande
    fichierSortie.close()

  3. #3
    Membre confirmé Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Par défaut
    oui, ca peut etre une apllication externe,
    mais ca peut aussi etre simplement une fonction.

    dans ton exemple, "fichierSortie" recoie une copie du stdout/stderr de l'appli ?
    (i.e. j'aurai un affichage + copie dans le fichier)

    ou il devient le stdout/stderr de ton appli ?
    (i.e. j'aurai un affichage uniquement dans le fichier)

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par défaut
    il devient l'unique stdout/stderr de l'appli, mais ca ne va pas marcher pour appeler une fonction.

    Utilise alors ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #-*- coding:Utf-8 -*-
    import sys
     
    def test():
            print("un")
     
    if __name__ == '__main__':
            fichierSortie = open('monFichierDeSortie.log', 'a+')
            sortieInitiale = sys.stdout
            sys.stdout = fichierSortie
            test()
            sys.stdout = sortieInitiale
            print("deux")
            fichierSortie.close()

  5. #5
    Membre confirmé Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Par défaut
    super, c'est ca.


    merci bien.

  6. #6
    Membre confirmé Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Par défaut
    question bonus.

    dans le cas d'une fonction, admettons que je ne veuille pas ecrire dans un fichier.

    comment est-ce que je peux creer un genre de "iostream" qui pourra servir d'output pendant l'execution de la fonction ?

    le but, c'est que je puisse ensuite jouer comme bon me semble avec cet "iostream".
    par exemple:
    - traiter son contenu
    - dupliquer partiellement (ou pas) son contenu sur stdout
    - mettre son contenu dans un fichier.
    - ...

    biensur, je pourrais ouvrir un fichier tampon pour le faire, mais je prefererai eviter.

    merci.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2008, 19h54
  2. stdout.txt stderr.txt ouverture
    Par nightwar dans le forum Eclipse C & C++
    Réponses: 5
    Dernier message: 22/03/2008, 17h48
  3. Filtré sorties stdout et stderr avec open()
    Par Jjeje007 dans le forum Langage
    Réponses: 9
    Dernier message: 09/06/2007, 22h52
  4. Réponses: 2
    Dernier message: 27/10/2006, 17h07
  5. [Runtime][exec]Récupérer les stdout ET stderr
    Par yveslamand dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 20/05/2005, 13h37

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