23

我有一个 python 包,它从以下位置输出大量帮助文本:help(package)

我想将此帮助文本以显示的格式导出到文件中help(package)

我该怎么办?

4

10 回答 10

20

pydoc.render_doc(thing) 以字符串形式获取事物的帮助文本。pydoc 的其他部分,如 pydoc.text 和 pydoc.html 可以帮助您将其写入文件。

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

pydoc -w Rpi.GPIO

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

于 2012-06-29T17:35:24.527 回答
12

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

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')
于 2012-06-29T17:05:38.240 回答
8

一个老问题,但较新的推荐通用解决方案(用于 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')
于 2018-08-17T08:47:13.417 回答
6

要获得“干净”的文本输出,就像内置的 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'
于 2019-12-20T00:40:06.700 回答
2

如果你帮助(帮助)你会看到:

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).

[休息剪断]

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

于 2012-06-29T16:42:40.493 回答
2

选定的答案对我不起作用,因此我进行了更多搜索,并找到了适用于 Daniweb 的内容。归功于 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
于 2018-11-21T19:49:41.793 回答
1

最干净的方法

假设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

于 2020-12-31T12:01:47.423 回答
1

最简单的方法是通过使用

系统模块

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

file="str.txt";file1="list.txt"
out=sys.stdout
sys.stdout=open('str_document','w')
help(str)
sys.stdout.close
于 2018-11-28T16:57:10.493 回答
0

pydoc already provides the needed feature, a very well-designed feature that all question-answering systems should have. The pydoc.Helper.init has an output object, all output being sent there. If you use your own output object, you can do whatever you want. For example:

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

when passed as

O = OUTPUT() # Necessarily to remember results, but see below.

help = pydoc.Helper(O)

will store all results in the OUTPUT instance. Of course, beginning with O = OUTPUT() is not the best idea (see below). render_doc is not the central output point; output is. I wanted OUTPUT so I could keep large outputs from disappearing from the screen using something like Mark Lutz' "More". A different OUTPUT would allow you to write to files.

You could also add a "return" to the end of the class pydoc.Helper to return the information you want. Something like:

if self.output_: return self.output_

should work, or

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

All of this is possible because pydoc is well-designed. It is hidden because the definition of help leaves out the input and output arguments.

于 2018-07-30T22:12:00.720 回答
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中。

于 2018-03-14T19:13:01.847 回答