2009-07-30 50 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

相關問題