有什么办法让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/

10-16 22:16