Partage
  • Partager sur Facebook
  • Partager sur Twitter

Difficulté affichage fonction help(str)

cours "Apprenez à programmer en Python" "Créez votre premier objet"

Sujet résolu
    22 septembre 2019 à 13:01:05

    Bonjour,

    Je suis en train de suivre le cours "Apprenez à programmer en Python".

    Au chapitre 11 "Créez votre premier objet : les chaînes de caractères" on nous explique que pour voir les méthodes et variables de la class "str" il faut écrire help(str). Je n'ai pas d'erreur de ce coté, en revanche le résultat final me pose un souci de lecture.

    Je m'explique via deux cas :

    - Lorsque j'écris dans l'IDLE sur la console >>> help(str) je peux voir toute l'aide (j'ai un bouton a cliquer mais je peux tout voir). Tout est ok

    - Lorsque j'enregistre la fonction dans un fichier .py et que je le lance dans python 3.7 (simple double-click sur windows), j'obtiens bien le résultat dans la boite de commande mais il est partiel. J'ai le début de l'aide jusqu’à la ligne --suite--. Pour voir la suite de l'aide et les autres méthodes je dois appuyer sur entrée pour afficher l'aide ligne par ligne. Autant vous dire qu'il faut appuyer sur entrée un nombre incalculable de fois pour afficher toute l'aide. Quand je reste appuyer ça me fait quitter la boite de commande car je ne sais pas quand m’arrêter.

    Voici mon code :

    -----début------

    #! /usr/bin/python3.7
    # -*- coding: utf-8 -*-
    import os


    help(str)

    os.system("pause")

    -----fin------

    Voici ma demande :

    Que dois-je rajouter à mon code/faire pour voir toute l'aide dans la boite de commande lorsque je lance python sans avoir à appuyer sur entrée.

    J'ai fais quelques recherches sur le forum mais je n'ai pas trouvé réponse à cette question. Je sais que je peux toujours passer par l'IDLE, mais

    si jamais il n'y a pas de solutions (ce qui m'étonnerais), j'aimerais tout de même comprendre ce qu'il se passe.

    Je vous remercie d'avance pour vos réponses et votre temps.

    Bonne journée

    Cdlt

    • Partager sur Facebook
    • Partager sur Twitter
      22 septembre 2019 à 14:07:20

      help n'est pas prévu pour ça. Tu peux toutefois rediriger la sortie standard vers un fichier soit avec une redirection système, soit via Python :

      import sys
      
      out=sys.stdout
      sys.stdout = open('help_str.txt', 'w')
      help(str)
      sys.stdout.close()
      
      sys.stdout =out
      print(open('help_str.txt').read())

      qui affiche (sortie tronquée) :

      Help on class str in module builtins:
      
      class str(object)
       |  str(object='') -> str
       |  str(bytes_or_buffer[, encoding[, errors]]) -> str
       |  
       |  Create a new string object from the given object. If encoding or
       |  errors is specified, then the object must expose a data buffer
       |  that will be decoded using the given encoding and error handler.
       |  Otherwise, returns the result of object.__str__() (if defined)
       |  or repr(object).
       |  encoding defaults to sys.getdefaultencoding().
       |  errors defaults to 'strict'.
       |  
       |  Methods defined here:
       |  
       |  __add__(self, value, /)
       |      Return self+value.
       |  
       |  __contains__(self, key, /)
       |      Return key in self.
       |  
       |  __eq__(self, value, /)
       |      Return self==value.
       |  

      Tout ceci est un peu hacky et certainement améliorable.

      -
      Edité par PascalOrtiz 22 septembre 2019 à 14:08:45

      • Partager sur Facebook
      • Partager sur Twitter
        22 septembre 2019 à 14:49:10

        En dehors de python, c'est à dire dans le terminal, tu peux faire ça :

        pydoc str | cat
        • Partager sur Facebook
        • Partager sur Twitter
          22 septembre 2019 à 15:01:46

          La fonction help est issue du module standard pydoc.

          Pour une fonction qui renvoie la documentation d'un objet dans une chaîne de caractères, voir pydoc.getdoc(object).

          • Partager sur Facebook
          • Partager sur Twitter
            22 septembre 2019 à 15:03:14

            En fait, help utilise directement pydoc :

            from pydoc import render_doc
            print(render_doc("str"))


            qui affiche la help(str) en mode non interactif.

            EDIT grilled

            -
            Edité par PascalOrtiz 22 septembre 2019 à 15:03:46

            • Partager sur Facebook
            • Partager sur Twitter
              22 septembre 2019 à 21:15:03

              Merci pour toute vos réponses.

              Mon problème est résolu grâce à vous :D

              Je met à jour le sujet en "sujet résolu"

              Bonne soirée à tous

              Cdlt

              • Partager sur Facebook
              • Partager sur Twitter

              Difficulté affichage fonction help(str)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown