一段時間以來,我一直試圖圍繞着Cellebrite的物理分析器,Python shell的腳本。 PA外殼的文檔不完整,我相信API的全面文檔將使編碼變得更容易。幾個星期前,我意識到內置help()
函數會給我大部分我需要的信息,但它受限於其對殼體的限制,等等。我如何解析python`help`輸出到類存根
我最近完成了一個腳本,它將每個幫助條目(以及一些附加信息)保存到我桌面上目錄中的txt文件。我想將這些文件轉換爲類存根,我可以使用它們來創建更清晰的文檔並在IDE中簡化類型提示。
下面是問題: 我不知道如何解析幫助文件。我可以編寫一系列複雜的正則表達式,但是我的程序已經夠混亂了。
有誰知道將幫助文檔轉換爲存根的簡單方法嗎?
P.S.
由存根我的意思是這樣:
幫助:
| 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的不是我的語言,所以請原諒以上任何語法錯誤。
編輯: 我真的想開車回家的事實,蟒蛇不我的語言,如果你看到了這個問題,並認爲「很好,他一定已嘗試」,我可能還沒有
EDIT2: 這是劇本我到目前爲止有:
https://drive.google.com/file/d/0B-5Y1OoryQYuczE4REpDR1FiRWc/view?usp=sharing 原諒可怕的語法。整個事物嵌套在if True:
中,因爲除非縮進,否則外殼將在第二行中斷開,並且我需要以某種方式開始該塊。而我以二進制模式寫入文件的原因是,如果我嘗試進行文本操作,它會一直出錯。其餘的可能就在我身上。
EDIT3: 幫助示例:https://drive.google.com/file/d/0B-5Y1OoryQYuSjJrOGFLeVU3RWc/view?usp=sharing
如果這是太廣,我不明白什麼也沒有得到充分的解釋。我很感激任何關於它太模糊的地方。
你有沒有理由不想自己解析現有的類? –
如果你會原諒我的無知,我不知道這意味着什麼。 – chrisgotter
你的IDE如何知道它應該從你的'chrisgotter.somelib.Class'中繪製關於'somelib.Class'對象的type-hint信息?另外,如果模塊本身中的類型信息不夠用,那麼您的信息副本如何提供幫助?或者你打算在你學習更多關於它們的時候手動註釋你的存根類嗎?如果是這樣的話,最好忽略'help'系統,只需複製和編輯* .py文件(如果只有少數幾個,或者使用['ast'模塊](https:// docs .python.org/3/library/ ast.html))......這可能是伊格納西奧說的話。 –