有什么办法让pydoc的writedocs()函数创建包的子目录吗?例如,假设我要记录以下模块:
foo.py
dir/bar.py
dir/__init__.py
当我运行pydoc.writedocs()时,我得到以下文件:
foo.html
dir.bar.html
我想得到:
foo.html
dir/bar.html
有什么办法吗?
最佳答案
pydoc.writedocs
只是循环调用writedoc
,该文档已被记录(并实现)为“在当前目录中写入文件”。我唯一能看到的方法是制作一个修改后的版本,然后将其强制(即叹气,猴子修补)到模块中,或者猴子修补模块的某些关键方面,即在“ open”打开的位置编写要求的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并非旨在让您做自己想做的事情,因此,需要稍微“花哨”。
关于python - pydoc可以生成子目录吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1208990/