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

时间:2016-01-22 05:20:45

标签: python shell pydev

一段时间以来,我一直试图围绕Cellebrite物理分析器,Python shell编写脚本。 PA的shell文档不完整,我相信API的全面文档可以使编码更加容易。几个星期前,我意识到我内置的help()函数会给我我需要的大部分信息,但它受限于它对shell的束缚等等。

我最近完成了一个脚本,它将每个帮助条目(以及一些其他信息)保存到桌面上目录中的txt文件中。我想将这些文件转换为类存根,我可以使用它们来创建更清晰的文档,并在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 不是我的语言,如果你看到这个问题并想想,那么,他一定已经尝试过了#34;我可能已经没有了#34;吨

EDIT2: 这是我到目前为止的剧本:

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

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

如果这太宽泛,我不明白什么没有得到充分的解释。我会很感激任何关于它太模糊的指示。

1 个答案:

答案 0 :(得分:0)

您不需要解析帮助数据以执行您想要的操作。

相反,您可以直接使用标准python库来反省该类。

例如,试试这个:

import inspect
print inspect.getmembers(C)

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