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 :

Console : écrire sur la ligne précédente


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Console : écrire sur la ligne précédente
    Salut à tous !

    Pour simplifier mon problème, j'effectue de longues opérations en python. J'ai une variable i dans laquelle la progression est stockée et j'aimerais m'en servir pour avoir un indicateur de progression d'un type très classique :

    Bien sûr, je pourrais faire un
    print "Progression [" , i,"%]"
    mais j'aurais alors

    Progression : 1%
    Progression : 1%
    Progression : 2%
    Progression : 2%
    Progression : 3%
    C'est pourquoi j'aimerais pouvoir revenir sur la ligne précédente, effacer les 3 derniers caractères et écrire à nouveau. Est-ce possible ? Je n'ai rien trouvé de bon sur google.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 473
    Points : 9 270
    Points
    9 270
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Regarde peut-être du côté du module "curses".

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Hum, non ce n'est pas vraiment ce que je cherche... Merci quand même

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Si ton seul besoin est d'écrire sur la même ligne, le code suivant fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import sys, time
     
    for i in range(1, 6):
        sys.stdout.write (str(i) + chr(13))
        time.sleep (1)
    Par défaut quand on fais un print en console, le print envoi en fin de ligne un chr(13) et un chr(10), carriage return et line feed.

    Carriage return "chr(13)" renvoi en début de ligne et line feed "chr(10)" effectue un saut de ligne. La je passe par le périphérique stdout qui correspond à la console et j'écris sur ce périphérique juste le carriage return, ce qui à pour but de renvoyer en début de ligne sans le saut de ligne.

    Si tu as besoin de plus de fonctionnalités, il faut regarder par exemple autour de ces projets :

    http://newcenturycomputers.net/projects/wconio.html
    http://www.effbot.org/zone/console-handbook.htm

    P.S.: L'intervenant précédent qui parlait de curses étais dans le vrai, à part que curses, de mémoire, ne fonctionne que sous unix/linux.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  5. #5
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Merci pour le tips, ça me servira.
    J'ajouterais juste la necessité de faire un sys.stdout.flush() pour rafraichir l'affichage (sous ubuntu en tout cas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import sys, time
     
    for i in range(1, 6):
        sys.stdout.write (str(i) + chr(13))
        sys.stdout.flush()
        time.sleep (1)
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 473
    Points : 9 270
    Points
    9 270
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par DelphiManiac Voir le message
    P.S.: L'intervenant précédent qui parlait de curses étais dans le vrai, à part que curses, de mémoire, ne fonctionne que sous unix/linux.
    Je n'ai jamais utilisé le module curses, d'où la prudence de mon propos. Il est vrai que dans la doc du module, le sujet "applicable à Windows" est abordé sans être limpide:

    While curses is most widely used in the Unix environment, versions are available for DOS, OS/2, and possibly other systems as well.
    De plus

    - dans la liste des modules, il n'est pas cité comme limité à UNIX
    - le module existe bien dans ma version Windows de Python 2.5
    - rien dans le code des éléments de ce module ne mentionne de restriction

    Mais je n'ai jamais essayé, et à vrai dire, je ne sais pas m'en servir.

    Il vaut mieux, effectivement, rester sur la ligne écrite pour ne pas avoir à "remonter".

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. JCheckBox : écrire sur plusieurs lignes
    Par Auteur dans le forum Composants
    Réponses: 9
    Dernier message: 10/11/2010, 15h00
  2. [POI / JXL] écrire sur plusieurs lignes dans excel
    Par LinoaHeart dans le forum Documents
    Réponses: 0
    Dernier message: 30/09/2009, 11h52
  3. Réponses: 5
    Dernier message: 12/05/2009, 11h17
  4. verification sur la ligne précédente
    Par maysa dans le forum Requêtes
    Réponses: 0
    Dernier message: 28/05/2008, 10h36
  5. écrire sur plusieurs lignes dans un fichier
    Par kenny49 dans le forum Langage
    Réponses: 3
    Dernier message: 06/04/2007, 11h47

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