2012-03-11 2 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' команда, что вы пытаетесь повторно реализовать? –

ответ

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 Верните красивое строковое представление объекта. Если аргумент представляет собой строку, возвращаемое значение является одним и тем же объектом. Вместо документации для модуля. –

+0

'pydoc.getdoc()' будет ссылаться на модуль, а не на строку, содержащую имя модуля. Если вы передадите ему строку, вы получите помощь для класса 'str'. – kindall

Смежные вопросы