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 :

readline et raw_input: où sont les bugs ?


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut readline et raw_input: où sont les bugs ?
    Salut à toutes et tous

    Situons le contexte pour commencer:
    Certains l'ont peut-être vu, j'ai créé un petit shell en python.
    Je me sers bien sur du module readline pour l'autocomplétion.

    Hélas je me heurte pour l'instant à des bugs:
    1. Lorsque raw_input est appelé avec un chaine de prompt qui contient des caractères invisibles, le retour à la ligne ne se fait pas correctement.
      Essayez par vous-même:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      raw_input("\x1b[31m>>> \x1b[0m")
    2. Readline me pose un souci lorsque je sors de certaines application qui se servent de toute la console.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      import readline
      from subprocess import Popen
       
      Popen('watch uptime', shell=True).wait()
      # Faites ctrl-C pour quitter, et essayez d'écrire quelque chose...


    Voila... si quelqu'un a des idées pour corriger ça, je suis preneur

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Ok, pour readline, c'est corrigé. Ce fut la guerre...

    Visiblement, la commande watch n'était pas compatible avec Popen. Je dois impérativement me servir de os:system. Pourtant, vi et nano n'avaient aucun souci. Le problème est peut-être dans watch même.

    Reste à résoudre le souci de raw_input. Et c'est un problème qui n'existe apparemment pas sous Python 3. Hélas, readline n'est pas par défaut sous python 3...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    le retour à la ligne ne se fait pas correctement
    C'est à dire ??


    Sous Python 2.5.4, l'instruction
    affiche

    Je ne comprends pas quel est le problème.


    Pourquoi faire référence à raw_input() et non pas print ?


    J'ai vu ici ou là le carré appelé caractère Null et non pas invisble.

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Hmmm, je n'ai pas été très clair sur ce point, de fait.
    Réessaye le raw input, mais cette fois met une réponse assez longue pour, normalement, passer à la ligne.

    Chez moi, ce qui est sensé se mettre sur la deuxième ligne réécrit purement et simplement sur la première...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Je n'ai toujours pas saisi quel est le phénomène à observer.

  6. #6
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Euhhh... si j'ai bien compris, ton but est d'avoir un retour à la ligne, c'est ça ? C'est pour ça que t'utilises le '\x1b' ? As-tu essayer un simple '\n' ? (t'as sûrement du déja essayé, mais comme c'est pas précisé, sait-on jamais... ça parait bête mais si ça se trouve c'est pas plus con que ça.Si toutefois j'ai bien compris ton but... )


  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

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

    j'ai essayé en mode interactif et avec un script. je n'ai pas le problème que tu mentionnes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> toto=raw_input("Entrez vos donnees\n==>")
    Entrez vos donnees
    ==>kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaaaaaaaaaa
    aaaaaaaaaaaaaaaaqqqqqqqqqqqqqqqqqqqqqqqqqqqa
    >>> toto
    'kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaaaaaaaaaaaaa
    aaaaaaaaaaaaaqqqqqqqqqqqqqqqqqqqqqqqqqqqa'

  8. #8
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    lol N.Tox

    non, le \x1b c'est pour le formatage de console. En l'occurence, pour la couleur rouge, lorsqu'il est suivi de [31m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> raw_input("\x1b[31m>>> \x1b[0m")
    >>> Jusque la, ca marche
    'Jusque la, ca marche'
     
    >>> raw_input("\x1b[31m>>> \x1b[0m")
    r a la ligne, admirez le resultat
    "Mais si j'essaye de faire un loooooooooooong message qui doit passer a la ligne, admirez le resultat"

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    J'ai regardé la Library Reference concernant raw_input()

    Ben évidemment que queque choz m’échappait.
    Il est question du raw_input() de la classe InteractiveConsole !
    Ça n’aurait pas été plus mal de le préciser.

  10. #10
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Haaa.... ok ! Ouais, j'étais comme y faut à côte de la plaque ... Enfin bon, hormis toucher aux sources je vois pas trop quoi faire

  11. #11
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Ben évidemment que queque choz m’échappait.
    Il est question du raw_input() de la classe InteractiveConsole !
    Ça n’aurait pas été plus mal de le préciser.
    A vrai dire, je ne savais même pas qu'il y en existait plusieurs...

    Je parle du raw_input built-in dans python 2.x, ni plus ni moins.

Discussions similaires

  1. Quels sont les meilleurs livres pour UML ?
    Par Matthieu Brucher dans le forum Livres
    Réponses: 33
    Dernier message: 31/01/2014, 10h36
  2. Quelles sont les distibutions avec le kernel 2.4.x.x?
    Par barucca dans le forum Administration système
    Réponses: 7
    Dernier message: 01/04/2004, 15h44
  3. Réponses: 2
    Dernier message: 22/09/2003, 12h37
  4. [CR][Jetform] Quelles sont les différences ?
    Par littlecow dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/07/2002, 11h40
  5. quels sont les possibilitées???
    Par lolo-d dans le forum OpenGL
    Réponses: 11
    Dernier message: 16/05/2002, 00h41

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