如何导出Python内置help()函数的输出

时间:2012-06-29 16:31:54

标签: python pydoc

我有一个python包,可以从help(package)

输出相当多的帮助文本

我想将此帮助文本导出到文件中,其格式由help(package)

显示

我怎么能这样做?

10 个答案:

答案 0 :(得分:15)

pydoc.render_doc(thing)将东西的帮助文本作为字符串。像pydoc.text和pydoc.html这样的pydoc的其他部分可以帮助你将它写入文件。

在linux中使用-w修饰符会将输出写入当前目录中的html,例如;

pydoc -w Rpi.GPIO

将命令help()中显示的所有help(Rpi.GPIO)文本放入一个格式良好的文件Rpi.GPIO.html中,在shell的当前目录中

答案 1 :(得分:5)

这有点hackish(并且在某处可能有更好的解决方案),但这有效:

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

然后......

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

答案 2 :(得分:1)

如果你提供帮助(帮助),你会看到:

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 snipped]

所以 - 你应该看一下pydoc模块 - 会有一个方法或方法返回help(something)作为字符串做的...

答案 3 :(得分:1)

一个古老的问题,但较新的recommended通用解决方案(适用于Python 3.4+),用于将print()的函数输出写入终端使用的是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)

用法示例:

write_help(int, 'test.txt')

答案 4 :(得分:1)

要获得“干净”的文本输出,就像内置的help()所提供的那样,并且适合导出到文件或其他任何内容,可以使用以下命令:

>>> import pydoc
>>> pydoc.render_doc(len, renderer=pydoc.plaintext)
'Python Library Documentation: built-in function len in module builtins\n\nlen(obj, /)\n    Return the number of items in a container.\n'

答案 5 :(得分:0)

在Windows中,只需打开Windows命令行窗口,转到Python安装的Lib子文件夹,然后键入

python pydoc.py moduleName.memberName> C:\ MyFolder文件\ memberName.txt

将moduleName中的属性或方法memberName的文档放入文件memberName.txt中。如果您希望对象位于模块的层次结构的下方,只需添加更多点。例如

python pydoc.py wx.lib.agw.ultimatelistctrl> C:\ MyFolder文件\ UltimateListCtrl.txt

将wxPython包中agw包中的UltimateListCtrl控件的文档放入UltimateListCtrl.txt。

答案 6 :(得分:0)

pydoc已经提供了所需的功能,这是所有问答系统都应具有的精心设计的功能。 pydoc.Helper。 init 有一个输出对象,所有输出都发送到那里。如果使用自己的输出对象,则可以做任何您想做的事情。例如:

OUTPUT()类:

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 = []

通过

O = OUTPUT()#必须记住结果,但请参见下文。

help = pydoc.Helper(O)

会将所有结果存储在OUTPUT实例中。当然,从O = OUTPUT()开始并不是最好的主意(请参见下文)。 render_doc不是中心输出点;输出是。我想要输出,所以我可以使用Mark Lutz的“更多”来防止大输出从屏幕上消失。不同的输出将允许您写入文件。

您还可以在pydoc.Helper类的末尾添加“ return”以返回所需的信息。像这样:

如果self.output_:返回self.output _

应该工作,或者

如果self.output_:返回self.output.return _()

所有这些都是可能的,因为pydoc是经过精心设计的。它之所以被隐藏是因为帮助的定义忽略了输入和输出参数。

答案 7 :(得分:0)

选择的答案对我不起作用,因此我进行了更多搜索,发现在Daniweb上有用的内容。信誉值得一提。 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

答案 8 :(得分:0)

最简单的方法是使用

  

sys模块

它在操作系统与其自身之间打开一个数据流,它从帮助模块中获取数据,然后将其保存在外部文件中

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

答案 9 :(得分:0)

最干净的方式

假设 help(os)

步骤 1 - 在 Python 控制台中

 import pydoc 
 pydoc.render_doc(os, renderer=pydoc.plaintext)` 
 
 #this will display a string containing help(os) output 

第 2 步 - 复​​制字符串

第 3 步 - 在终端上

echo "copied string" | tee somefile.txt 

如果要在文本文件中写入类信息。按照以下步骤操作

  1. 在类中的某处插入 pdb 钩子并运行文件

    导入pdb; pdb.set_trace()

  2. 执行上述步骤 1 到 3