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 :

Simuler l'éxécution en mode console d'un fichier Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Simuler l'éxécution en mode console d'un fichier Python
    Bonjour,
    voici mon problème du jour. Considérons le code très simple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/env python
    #coding=utf-8
    a = 5
    print a
    a = 2*a
    print a
    Je voudrais faire un petit code Python qui simulerait le mode console, à savoir qui pour le fichier exemple ci-dessus me renverrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a = 5
    >>> print a
    5
    >>> a = 2*a
    >>> print a
    10
    Quelque voit-il comment faire sachant que le souci est ici est de récupérer chacune des sorties et les lignes qui les ont produites ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Une proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import code
     
    console = code.InteractiveConsole()
     
    def run(str):
        print ">>> " + str
        console.push(str)
     
    with open("exemple.py") as f:
        for l in f:
            run(l.rstrip())

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Génial ! J'ai testé le code suivant et aucun souci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/env python
    #coding=utf-8
    from sympy import *
    x=Symbol("x")
    limit(sin(x)/x, x, 0)

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    En fait, j'ai un souci. Comment faire pour récupérer dans une chaîne ce qui est écrit dans la console Python ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Il faut remplacer sys.stdout par une instance d'une classe avec la méthode write.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import sys
     
    class str_stdout:
        def __init__(self):
            self.stdout = sys.stdout
            self.buffer = ''
            sys.stdout = self
        def write(self, str):
            self.buffer += str
        def __str__(self):
            return self.buffer
        def close(self):
            sys.stdout = self.stdout
     
    tt = str_stdout()
     
    print "blabla"
     
    tt.close()
     
    # affiche blabla
    print str(tt)

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    J'ai dû zapper quelque chose.

    Quand je lance le code suivant, j'obtiens 1 dans la console Python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/env python
    #coding=utf-8
    from sympy import *
    x=Symbol("x")
    limit(sin(x)/x, x, 0)
    Quand j'utilise la 1ère méthode, on récupère juste les lignes du fichier à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> #!/usr/bin/env python
    >>> #coding=utf-8
    >>> from sympy import *
    >>> x=Symbol("x")
    >>> limit(sin(x)/x, x, 0)
    Il faudrait que j'arrive à récupérer cette valeur 1... Autrement dit, il me faut la ligne et ce qui sort éventuellement, et le tout sous forme de chaîne manipulable.

    Si quelqu'un a-t-il une idée ?

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

Discussions similaires

  1. Mises à jour des paquetages en mode console
    Par Memnoch31 dans le forum Debian
    Réponses: 6
    Dernier message: 16/05/2004, 16h30
  2. Des couleurs en mode console
    Par davcha dans le forum MFC
    Réponses: 3
    Dernier message: 08/05/2004, 14h37
  3. Mode console par défaut
    Par sekiryou dans le forum Administration système
    Réponses: 5
    Dernier message: 05/03/2004, 06h38
  4. Mode console et MFC ??
    Par G3G3 dans le forum MFC
    Réponses: 7
    Dernier message: 20/02/2004, 17h49
  5. Editeur en mode console
    Par logramme dans le forum C
    Réponses: 5
    Dernier message: 11/06/2002, 13h23

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