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 :

Print Ouptut sans retour à la ligne [Python 2.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Exploitant Services en Ligne
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Exploitant Services en Ligne
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Print Ouptut sans retour à la ligne
    Bonjour,
    Je me permet d'ouvrir une discussion sur un problème que je rencontre et pour lequel je ne trouve pas de solution.
    J'utilise le module logging pour afficher des messages d'erreur sur ma console (ce qui marche très bien).
    A la fin de mon script, je fais un dernier print. Or je voudrait que ce dernier print se fasse sur la même ligne que mon dernier message d'erreur.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Erreur
    Erreur1
    Erreur2
    ....
    ErreurX toto
    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Pour éviter qu'un print aille à la ligne, il faut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print 'toto', # syntaxe V2
    print ('toto', end='') # syntaxe V3
    Pour ce qui est affiché par le module logging, c'est beaucoup plus compliqué car ce sont plus de simples chaînes de caractères mais des records qui vont être mis en forme par un "formatter" pour être ensuite écrits sur la sortie qui peut être n'importe quoi (un fichier, une socket)...
    Et vous n'allez probablement pas écrire un formatter juste pour traiter de façon spécifique le dernier message.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    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 Python 2 on se contente d'ajouter une virgule à la fin de la chaîne de texte pour rester sur la même ligne au print suivant.

    Avec Python 3 on ajoute l'argument end=''.

    Mais dans la mesure ou les messages de logging ajoute un saut de ligne automatiquement, je pense que tu ne pourras rien y faire. On ne peut pas revenir à la ligne précédente dans un terminal.

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je suis d'accord avec VinsS: si c'est le module logging qui affiche, c'est lui qui envoie le dernier fin de ligne.

    Mais justement: on a la chance avec Python d'avoir pas mal de modules "système" en source. On peut donc explorer le module logging ainsi que ses dépendances, trouver à quel endroit il affiche les erreurs et s'approprier la fonction ou la méthode qui affiche, pour paramétrer la fin de ligne.

    Si c'est une fonction, on peut la recopier et la modifier, et si c'est une méthode, il faut sous-classer la classe et surcharger la méthode pour la redéfinir. Et, bien sûr, faire en sorte que cette fonction ou cette méthode soit utilisée par logging en remplacement de celles d'origine.

    Je n'ai pas dit que c'était facile...

    Si c'est trop compliqué, il est aussi possible de détourner les canaux d'affichage sys.stdout et sys.stderr pour paramétrer la fin de ligne, pour autant que l'on puisse tester à quel endroit il en faut une ou pas. Ce n'est pas simple non plus.

    Bref, tout dépend si c'est important ou pas d'obtenir le résultat voulu, et si ça justifie un tel effort...
    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

  5. #5
    Candidat au Club
    Homme Profil pro
    Exploitant Services en Ligne
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Exploitant Services en Ligne
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci de votre aide mais je pense que je vais abandonner mon idée de départ et contourner mon problème.
    Je me doutais bien que ça ne serait pas facile et je pense pouvoir le résoudre d'une autre façon.
    Encore merci pour votre aide.

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

Discussions similaires

  1. Ma liste à puce sans retour à la ligne ?
    Par ChrissBob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 23/08/2011, 13h05
  2. Récupérer contenu d'un flux sans retour à la ligne
    Par une maison en bois dans le forum C++
    Réponses: 3
    Dernier message: 06/11/2007, 02h12
  3. <div> sans retour à la ligne
    Par XtoX dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 16/03/2007, 15h20
  4. Scanf sans retour à la ligne
    Par mello dans le forum C
    Réponses: 10
    Dernier message: 11/11/2005, 17h22
  5. TMemo sans retour à la ligne
    Par da_latifa dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2005, 08h23

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