2012-03-11 73 views
3

我想寫一個Unix腳本,讓我打印給定模塊的Python幫助頁面。到目前爲止我的代碼低於:如何將Python的幫助頁直接輸出到stdout?

#!/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]) 

它的工作原理幾乎一樣我want--調用它模塊上類似於調用less緩衝拉起的幫助頁面。 (換句話說,help的工作原理與在解釋器中的使用方式完全相同)。

我想擺脫緩衝區並直接打印到標準輸出,以便我可以將命令與其他Unix命令。我想知道是否有辦法做到這一點,如果是這樣,如何?

+2

是你想重新實現什麼'pydoc'命令? – 2012-03-11 20:15:07

回答

5

這個工作對我來說:

import pydoc 

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

試試這個嗎?

import pydoc 

pydoc.help(xrange) 

或者,如果你想在字符串格式

pydoc.getdoc(xrange) 
+0

由於某些原因,pydoc.getdoc(模塊)無法正常工作。我得到輸出: 'str(object) - > string 返回一個很好的字符串表示形式的對象。 如果參數是一個字符串,則返回值是同一個對象。「而不是模塊的文檔。 – 2012-03-11 20:29:41

+0

'pydoc.getdoc()'將引用一個模塊,而不是包含模塊名稱的字符串。如果你傳遞一個字符串,你會得到'str'類的幫助。 – kindall 2012-03-12 06:08:14