Search code examples
pythonpydoc

Store contents of help() in a variable: Python


When we use the help() function it just displays the text and I can't store it in a variable...

h = help ( 'eval' ) # Doesn't work

So what do I do? And if I need to use PyDoc, how do I do it?


Solution

  • The simple way it to use the __doc__ attribute as @Thomas said

    If you want the exact output as what help(something) gives, then use

    import contextlib
    import io
    
    out_io = io.StringIO()
    
    with contextlib.redirect_stdout(out_io):
        help(eval)
    
    out_io.seek(0)
    # out has what you're looking for
    out = out_io.read()
    

    Explanation:

    contextlib.redirect_stdout temporarily patches sys.stdout to any file like object you pass it

    We pass in a StringIO object as the file-like object and it gets the printed value written to it

    Then finally the StringIO object is seeked back to the start and read from