¿Cómo exporto la salida de la función incorporada de ayuda de Python ()?

Tengo un paquete de python que genera un considerable texto de ayuda desde: help(package)

Me gustaría exportar este texto de ayuda a un archivo, en el formato en que se muestra con help(package)

¿Cómo podría hacer esto?

Esto es un poco pirateado (y probablemente haya una mejor solución en algún lugar), pero esto funciona:

 import sys import pydoc def output_help_to_file(filepath, request): f = open(filepath, 'w') sys.stdout = f pydoc.help(request) f.close() sys.stdout = sys.__stdout__ return 

Y entonces…

 >>> output_help_to_file(r'test.txt', 're') 

pydoc.render_doc (cosa) para obtener el texto de ayuda de la cosa como una cadena. Otras partes de pydoc como pydoc.text y pydoc.html pueden ayudarte a escribirlo en un archivo.

El uso del modificador -w en linux escribirá la salida en un html en el directorio actual, por ejemplo;

 pydoc -w Rpi.GPIO 

Coloca todo el texto de help() que se presentaría desde la help(Rpi.GPIO) del comando help(Rpi.GPIO) en un archivo con el formato correcto Rpi.GPIO.html, en el directorio actual del shell

Si ayudas (ayuda) verás:

 Help on _Helper in module site object: class _Helper(__builtin__.object) | Define the builtin 'help'. | This is a wrapper around pydoc.help (with a twist). 

[rest cortado]

Entonces, deberías estar mirando el módulo pydoc. Habrá un método o métodos que devolverán lo que help(something) hace como una cadena …

Una pregunta antigua, pero la solución genérica más reciente recomendada (para Python 3.4+) para escribir la salida de las funciones que print() en el terminal está usando contextlib.redirect_stdout :

 import contextlib def write_help(func, out_file): with open(out_file, 'w') as f: with contextlib.redirect_stdout(f): help(func) 

Ejemplo de uso:

 write_help(int, 'test.txt') 

En Windows, simplemente abra una ventana de la línea de comandos de Windows, vaya a la subcarpeta Lib de su instalación de Python y escriba

python pydoc.py moduleName.memberName> c: \ myFolder \ memberName.txt

para colocar la documentación de la propiedad o el método memberName en moduleName en el archivo memberName.txt. Si desea un objeto más abajo en la jerarquía del módulo, simplemente coloque más puntos. Por ejemplo

python pydoc.py wx.lib.agw.ultimatelistctrl> c: \ myFolder \ UltimateListCtrl.txt

para poner la documentación sobre el control UltimateListCtrl en el paquete agw en el paquete wxPython en UltimateListCtrl.txt.

pydoc ya proporciona la característica necesaria, una característica muy bien diseñada que deberían tener todos los sistemas de respuesta a preguntas. El pydoc.Helper. init tiene un objeto de salida, toda la salida se envía allí. Si usa su propio objeto de salida, puede hacer lo que quiera. Por ejemplo:

clase SALIDA ():

 def __init__(self): self.results = [] def write(self,text): self.results += [text] def flush(self): pass def print_(self): for x in self.results: print(x) def return_(self): return self.results def clear_(self): self.results = [] 

cuando pasa como

O = SALIDA () # Necesariamente para recordar resultados, pero vea más abajo.

ayuda = pydoc.Helper (O)

almacenará todos los resultados en la instancia de SALIDA. Por supuesto, comenzar con O = SALIDA () no es la mejor idea (ver más abajo). render_doc no es el punto de salida central; La salida es. Quería SALIDA para evitar que las salidas grandes desaparecieran de la pantalla usando algo como “Más” de Mark Lutz. Una SALIDA diferente le permitiría escribir en archivos.

También puede agregar un “retorno” al final de la clase pydoc.Helper para devolver la información que desea. Algo como:

si self.output_: return self.output_

debería funcionar, o

si self.output_: return self.output.return_ ()

Todo esto es posible porque pydoc está bien diseñado. Está oculto porque la definición de ayuda omite los argumentos de entrada y salida.

La respuesta seleccionada no me funcionó, así que busqué un poco más y encontré algo que funcionó en Daniweb. El crédito va a vegaseat. https://www.daniweb.com/programming/software-development/threads/20774/starting-python/8#post1306519

 # simplified version of sending help() output to a file import sys # save present stdout out = sys.stdout fname = "help_print7.txt" # set stdout to file handle sys.stdout = open(fname, "w") # run your help code # its console output goes to the file now help("print") sys.stdout.close() # reset stdout sys.stdout = out 

La forma más sencilla de hacerlo es mediante el uso de

módulo sys

abre un flujo de datos entre el sistema operativo y su sistema, toma los datos del módulo de ayuda y luego los guarda en un archivo externo

 file="str.txt";file1="list.txt" out=sys.stdout sys.stdout=open('str_document','w') help(str) sys.stdout.close