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 :

réécrire la dernière ligne (print)


Sujet :

Python

  1. #1
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut réécrire la dernière ligne (print)
    Bonjour à tous,

    Je cherche un moyen simple de réécrire une ligne printer en console, afin de pouvoir faire un décompte sans écrire 50 lignes.

    pour le moment le seul moyen que j'ai trouvé est d'utiliser les caractères "\b" dans un sys.stdout qui permettent d’effacer un caractère, mais je trouve ça assez crade:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sys.stdout.write("Téléchargement dans 10s")
    time.sleep(1)
    sys.stdout.write("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bTéléchargement dans 9s")
    time.sleep(1)
    ...
    bon, pour l'exemple donné, je pourrais simplement supprimer "10s" et remplacer par "9s", mais avec des phrases plus complexe c'est la galère, donc je supprime tout et je réécris ce que j'ai a écrire...


    y'a il une autre méthode moins dégueulasse ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    fonctionne sous linux, windows je ne sais pas.

    sinon, peur-être ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in range(10):
        a = str(i)
        print '\b'*(len(a)+1)+a,
        time.sleep(1)
    non, même pas ...

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Peut être comme cela

    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import sys
    import time
     
    for i in range(100, 0, -1):
        ph = "Téléchargement dans " + str(i) + "s"
        sys.stdout.write(ph)
        sys.stdout.flush() # Pour raffraichir l'affichage
        time.sleep(1)
        sys.stdout.write(chr(13)) # Retour chariot
        sys.stdout.write(' '*len(ph)) # Efface la ligne. Comprendre 100 > 99 = 1 caractere de moins
        sys.stdout.write(chr(13)) # Retour chariot
    Mais ça ne remplace pas 10s par 9s bien sur...

    @+
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sys.stdout.write("Téléchargement dans 10s")
    time.sleep(1)
    sys.stdout.write("\rTéléchargement dans 9s")
    time.sleep(1)
    non ?

  5. #5
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Merci

    effectivement un retour chariot plus propre déjà

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pensez au sys.stdout.flush(), ce n'est pas automatique sous linux.
    Et a effacer la ligne, dans le cadre du code de kango on se retrouve avec des 9ss, 8ss etc.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  7. #7
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Je développe sous linux, donc j'avais déjà remarqué pour l'affichage, et j'ai également vu le "9ss" si l'on efface pas la ligne en testant la fonction (je me suis pausé la question la première fois ^^)
    Mais merci pour le conseil

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

Discussions similaires

  1. [JScrollPane] [JTable] Se placer à la dernière ligne
    Par wishnight dans le forum Composants
    Réponses: 9
    Dernier message: 24/12/2015, 18h42
  2. [JList] rendre visible la dernière ligne ajoutée
    Par Mille sabords dans le forum Composants
    Réponses: 3
    Dernier message: 12/04/2005, 10h32
  3. Réponses: 14
    Dernier message: 30/03/2005, 21h50
  4. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57
  5. l'identifiant unique de la dernière ligne insérée
    Par dim_italia dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2004, 17h55

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