我如何将 python `help` 输出解析为 class 存根

how can I parse python `help` output into class stubs

一段时间以来,我一直在努力为 Cellebrite 的物理分析器编写脚本,Python shell。 PA shell 的文档不完整,我相信 API 的综合文档会使编码变得容易得多。几周前,我意识到内置的 help() 函数可以提供我需要的大部分信息,但它受限于 shell 等其他方面。

我最近完成了一个脚本,它将每个帮助条目(以及一些附加信息)保存到桌面目录中的一个 txt 文件中。我想将这些文件变成 class 存根,我可以使用它们创建更清晰的文档并促进 IDE.

中的类型提示

问题是: 我不知道如何解析帮助文件。我可以写一系列复杂的正则表达式,但我的程序已经够混乱了。

有谁知道将帮助文档翻译成存根的简单方法吗?

P.S.

by stub 我的意思是这样的:

帮助:

 |      C(Stream baseStream, long offset, long length)
 |      
 |      
 |  Data and other attributes defined here:
 |  
 |      Equals(...)
 |              bool Equals(self, C other)

存根:

class C(object):
    """
    No Documentation
    """

    def __init__(self, baseStream, offset, length):
        """
        No Documentation

        :type baseStream: Stream
        :type offset: long
        :type length: long
        :rtype: C
        """
        pass

    def Equals(self, other):
        """
        No Documentation

        :type other: C
        :rtype: bool
        """
        pass

python不是我真正的语言,所以请原谅上面的任何语法错误。

编辑: 我真的很想把 python 不是 我的语言这一事实​​带回家,如果你看到这个问题并认为 "well, he must have tried that",我可能没有 [=18] =]

编辑2: 这是我目前的脚本:

https://drive.google.com/file/d/0B-5Y1OoryQYuczE4REpDR1FiRWc/view?usp=sharing 原谅可怕的语法。整个内容嵌套在 if True: 中,因为除非缩进,否则 shell 将在第二行中断,我需要以某种方式开始该块。我以二进制模式写入文件的原因是,如果我尝试做文本,事情就会不断出错。剩下的可能就在我身上。

编辑 3: 帮助示例:https://drive.google.com/file/d/0B-5Y1OoryQYuSjJrOGFLeVU3RWc/view?usp=sharing

如果这太笼统了,我不明白什么地方没有得到充分的解释。我将不胜感激关于它哪里太模糊的任何指示。

您无需解析帮助数据即可执行所需操作。

相反,您可以直接使用标准 python 库自省 class。

例如,试试这个:

import inspect
print inspect.getmembers(C)

您应该能够轻松地重新创建存根,而无需解析帮助文本。