代码之家  ›  专栏  ›  技术社区  ›  sanyassh Khushboo Tahir

如何获取帮助(str)的字符串表示形式

  •  0
  • sanyassh Khushboo Tahir  · 技术社区  · 5 年前

    我有一个python包,它输出大量的帮助文本: help(package)

    我想将此帮助文本导出到一个文件中,其显示格式为 帮助(包)

    我该怎么办?

    0 回复  |  直到 5 年前
        1
  •  5
  •   Adrian Gugyin Michael0x2a    6 年前

    这有点黑客(在某个地方可能有更好的解决方案),但这是可行的:

    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
  •  15
  •   davidhood2    8 年前

    呈现文档以获取字符串形式的帮助文本。pydoc的其他部分,如pydoc.text和pydoc.html,可以帮助您将其写入文件。

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

    pydoc -w Rpi.GPIO
    

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

        3
  •  1
  •   Jon Clements    12 年前

    如果您提供帮助,您将看到:

    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) 作为字符串…

        4
  •  1
  •   Chris_Rands    6 年前

    旧问题,新问题 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')
    
        5
  •  0
  •   JDMorganArkansas    6 年前

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

    python pydoc.py modulename.membername>C:\myfolder\membername.txt

    将modulename中属性或方法membername的文档放入membername.txt文件。如果你想让一个对象在模块的层次结构中更进一步,只需再加一些点。例如

    python pydoc.py wx.lib.agw.ultimatelistcrl>C:\myfolder\ultimatelistcrl.txt

    将wxpython包中agw包中ultimatelistcrl控件上的文档放入ultimatelistcrl.txt。

        6
  •  0
  •   Clifford    6 年前

    Pydoc已经提供了所需的功能,这是一个设计良好的功能,所有问答系统都应该具备。pydoc.helper。 初始化 有一个输出对象,所有输出都发送到那里。如果您使用自己的输出对象,您可以做任何您想做的事情。例如:

    类输出():

    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()必须记住结果,但见下文。

    帮助=pydoc.helper(o)

    将所有结果存储在输出实例中。当然,以o=output()开头不是最好的主意(见下文)。render_doc不是中心输出点;输出为。我想要输出,这样我就可以用马克·卢茨的“更多”之类的东西防止大输出从屏幕上消失。不同的输出将允许您写入文件。

    还可以在类pydoc.helper的末尾添加一个“return”,以返回所需的信息。比如:

    如果self.output_ux:返回self.output_

    应该工作,或者

    if self.output_uu:返回self.output.return_u()

    所有这些都是可能的,因为Pydoc设计得很好。它是隐藏的,因为帮助的定义忽略了输入和输出参数。

        7
  •  0
  •   Matt    6 年前

    选定的答案对我不起作用,所以我做了更多的搜索,找到了一些在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
  •   N.Elsayed    6 年前

    最简单的方法是通过使用

    系统模块

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

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