我如何将Python的帮助页面直接打印到标准输出?

4
我正在尝试编写一个Unix脚本,让我能够打印出给定模块的Python帮助页面。以下是我目前的代码:
#!/usr/bin/env python

if __name__ == "__main__":
    import sys
    if sys.argv[1].endswith(".py"):
        __import__(sys.argv[1][:-3])
        help(sys.argv[1][:-3])
    else:
        __import__(sys.argv[1])
        help(sys.argv[1])

它基本上符合我的要求 - 在模块上调用它会在一个缓冲区中打开帮助页面,类似于调用less。(换句话说,help在解释器中使用时完全与此相同。)

我想要的是摆脱缓冲区并直接打印到标准输出,以便我可以将该命令与其他Unix命令一起使用。我想知道是否有方法可以实现这一点,如果有,应该如何做?


2
你是想重新实现 pydoc 命令吗? - user25148
2个回答

6
这对我很有效:
import pydoc

import math # test
print(pydoc.render_doc(math))

1

试试这个?

import pydoc

pydoc.help(xrange)

或者如果你想要它以字符串格式

pydoc.getdoc(xrange)

由于某些原因,pydoc.getdoc(module) 的效果并不完全如预期。我得到的输出是: `str(object) -> stringReturn a nice string representation of the object. If the argument is a string, the return value is the same object.` 而不是模块的文档。 - Ceasar
pydoc.getdoc() 接受一个模块的引用,而不是包含模块名称的字符串。如果你传递一个字符串,你将会得到 str 类的帮助信息。 - kindall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接