2009-07-30 51 views
1

有没有办法让pydoc的wrivedocs()函数为包创建子目录?举例来说,假设我有以下的模块文件:pydoc可以生成子目录吗?

foo.py 
dir/bar.py 
dir/__init__.py 

当我运行pydoc.writedocs(),我得到了以下文件:

foo.html 
dir.bar.html 

我想获得:

foo.html 
dir/bar.html 

有没有办法做到这一点?

回答

1

pydoc.writedocs刚刚循环调用writedoc,这是记录(和实现)“写入当前目录中的文件”。我能看到的唯一出路就是创建一个修改后的版本并将其强制(即叹息,修饰它)到模块中,或者修改它的一些关键方面,即在打开时打开写入要求的HTML文件打开。具体而言,在你的代码,你可以这样做:

import pydoc 

def monkey_open(name, option): 
    if option == 'w' and name.endswith('.html'): 
    name_pieces = name.split('.') 
    name_pieces[-2:] = '.'.join(name_pieces[-2:]) 
    name = '/'.join(name_pieces) 
    return open(name, option) 

pydoc.open = monkey_open 

不是一个优雅或非常强大的解决方案,但“需要,必须” ......是pydoc只是不是为了让你做你想要什么,所以这个东西需要被“shoe住”一下。

+0

好的,很高兴知道。在这种情况下,我想我不会重写模块的行为。但很高兴知道! python是否需要pydoc的功能请求?我想我可以以某种方式提交请求,呃? – 2009-07-30 21:13:00

相关问题