在 Sphinx 扩展中查找所有生成的 HTML 文件的名称

Find names of all generated HTML files in Sphinx extension

我想创建一个简单的 Sphinx 扩展,它 post 处理由 HTML 生成器创建后生成的 HTML 文件。我已经使用 BeautifulSoup 编写了一个 post 处理例程,但后来我遇到了将我的例程转换为单独的 Sphinx 扩展的问题。

我已经为 "build-finished" event using app.connect 注册了我的处理程序,但我仍然不知道如何获取要预处理的文件名列表。

出于某种原因在 Sphinx 文档中没有提到它,但是可以很容易地找到输出目录的路径 app.outdir。发现这个事实后,很容易收集到我需要的所有文件名:

def process_build_finished(app, exception):    
    if exception is not None:
        return

    target_files = []
    for doc in app.env.found_docs:
        target_filename = app.builder.get_target_uri(doc)
        target_filename = os.path.join(app.outdir, target_filename)
        target_filename = os.path.abspath(target_filename)
        target_files.append(target_filename)

    ...