Wednesday, May 14, 2008

pydoc

今天玩了下pydoc,还挺爽的,记录一下.

pydoc 是python的内建文档工具(貌似是利用python的反射弄的,爽是爽,不过好像对zope等库会有点问题啊)

pydoc的用法

pydoc - the Python documentation tool

pydoc.py <name> ...

    Show text documentation on something.  <name> may be the name of a  Python keyword, topic, function, module, or package, or a dotted  reference to a class or function within a module or module in a  package.  If <name> contains a '\', it is used as the path to a  Python source file to document. If name is 'keywords', 'topics',  or 'modules', a listing of these things is displayed.

    比如 :

    pydoc __builtin__.str.find 会显示str.find的文档,不过比较郁闷的是直接 pydoc str.find 是不行的...

pydoc.py -k <keyword>

    Search for a keyword in the synopsis lines of all available modules.

pydoc.py -p <port>

    Start an HTTP server on the given port on the local machine.

   在对应port开一个能返回文档的http server,用浏览器访问就可以了

pydoc.py -g

    Pop up a graphical interface for finding and serving documentation.

    超推荐,除了开http server外,还会打开一个小小的图形化搜索工具, 搜索的结果多于一项时,会显示为一个列表,双击列表的一项就会打开浏览器来访问http server来显示相关的文档

  不过貌似搜索功能不怎么样啊,只能直接搜索到module

pydoc.py -w <name> ...

    Write out the HTML documentation for a module to a file in the current

    directory.  If <name> contains a '\', it is treated as a filename; if

    it names a directory, documentation is written for all the contents.

   把生成的Html保存成文件而已



pydoc 生成的html的颜色挺不错,就是缺少一些导航的功能,比方说它把一个Module的文档分成Modules,Classes,Functions, Data,几大块,但没有对应的导航链接或锚点,想快速切换很麻烦.看了下源码,发现想改变输出的格式还是比较简单的,为了添加锚点,这样改了一下:

class HTMLDoc(Doc):

......

def bigsection(self, title, *args):

        """Format a section with a big heading."""

#        title = '<big><strong>%s</strong></big>' % title

       title = '<big><strong><a name="%s">%s</a></strong></big>' % (title,title)

        return self.section(title, *args)


这样想快速的跳到Functions部分只需要在浏览器的地址栏里的url后面加上#Functions ,然后按回车就可以了,以后有时间还可以继续优化 :)



另外vim上的pydoc.vim插件也很爽,因为它会直接调用pydoc命令,而我安装的python2.5没有附带它的命令行程序,自己弄了一个放到 python_root:

pydoc.bat:

  d:\%python_root%\Lib\pydoc.py  %*

这样就可以用 PyDocSearch或PyDoc 命令或直接把光标移动到想查询的字符串上按  \pw 来查询了

No comments: