我有一个 python 包,它从以下位置输出大量帮助文本:help(package)
我想将此帮助文本以显示的格式导出到文件中help(package)
我该怎么办?
pydoc.render_doc(thing) 以字符串形式获取事物的帮助文本。pydoc 的其他部分,如 pydoc.text 和 pydoc.html 可以帮助您将其写入文件。
在linux中使用-w
修饰符会将输出写入到当前目录下的一个html中,例如;
pydoc -w Rpi.GPIO
将命令中显示的所有help()
文本help(Rpi.GPIO)
放入 shell 的当前目录中格式良好的文件 Rpi.GPIO.html
这有点骇人听闻(并且在某处可能有更好的解决方案),但这有效:
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')
一个老问题,但较新的推荐通用解决方案(用于 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')
要获得“干净”的文本输出,就像内置的 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'
如果你帮助(帮助)你会看到:
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)
作为字符串的内容......
选定的答案对我不起作用,因此我进行了更多搜索,并找到了适用于 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
最干净的方法
假设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
最简单的方法是通过使用
系统模块
它在操作系统和它自己之间打开一个数据流,它从帮助模块中获取数据,然后将其保存在外部文件中
file="str.txt";file1="list.txt"
out=sys.stdout
sys.stdout=open('str_document','w')
help(str)
sys.stdout.close
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.
在 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中。