我有一个python包,可以从help(package)
我想将此帮助文本导出到文件中,其格式由help(package)
我怎么能这样做?
答案 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)
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
如果要在文本文件中写入类信息。按照以下步骤操作
在类中的某处插入 pdb 钩子并运行文件
导入pdb; pdb.set_trace()
执行上述步骤 1 到 3