在 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
注册了我的处理程序,但我仍然不知道如何获取要预处理的文件名列表。
- 如何获取生成的所有 HTML 个文件的列表? (或者,至少)
- 如何获取输出目录?我发现我可以使用
env.found_docs
and builder.get_target_uri
来获取生成页面的相对路径,但我需要目录名。
出于某种原因在 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)
...
我想创建一个简单的 Sphinx 扩展,它 post 处理由 HTML 生成器创建后生成的 HTML 文件。我已经使用 BeautifulSoup 编写了一个 post 处理例程,但后来我遇到了将我的例程转换为单独的 Sphinx 扩展的问题。
我已经为 "build-finished"
event using app.connect
注册了我的处理程序,但我仍然不知道如何获取要预处理的文件名列表。
- 如何获取生成的所有 HTML 个文件的列表? (或者,至少)
- 如何获取输出目录?我发现我可以使用
env.found_docs
andbuilder.get_target_uri
来获取生成页面的相对路径,但我需要目录名。
出于某种原因在 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)
...