【问题标题】:Autogenerate Markdown index from a recursive folder with makdown files in python使用python中的markdown文件从递归文件夹自动生成Markdown索引
【发布时间】:2023-04-01 09:30:02
【问题描述】:

您好,我有一个包含许多带有降价 (.md) 文件的子文件夹的文件夹,我想为此生成一个索引。我试试这个

MD_FILE_LIST = (y for x in os.walk(DOC_FILES_DIR)
                for y in glob(os.path.join(x[0], '*.md')))

with open(DOC_FILES_DIR + 'index.md', 'w') as f:
    text = []
    for m_file in MD_FILE_LIST:
        text.append('%s[%s](/%s)\n' % (m_file.count(os.sep)*' ',
                                  m_file.split(os.sep)[-1].replace('.md', ''),
                                  m_file.replace(DOC_FILES_DIR, '').replace(os.sep,'/')))

    f.writelines(text)

但是生成的文件没有显示链接的 html 视图,它显示为纯文本 [name](url)。如图所示
如果可能的话,至少为 2 或 3 个第一级创建一个标题

新版本

我做了一些修复,所以现在看起来像 THIS 这是我更新的版本代码:

with open(DOC_FILES_DIR + 'README.md', 'w') as f:
    text = []
    for m_file in MD_FILE_LIST:
        levels = m_file.replace(DOC_FILES_DIR, '').count(os.sep)
        if levels < 3:
            text.append( ' * ' + '#' * levels + ' [%s](./%s)\n' % (
                                    m_file.split(os.sep)[-1].replace('.md', ''),
                                    m_file.replace(DOC_FILES_DIR, '').replace(os.sep,'/')))
        else:
            text.append('%s[%s](./%s)\n' % (m_file.count(os.sep)*' ' + '- ',
                        m_file.split(os.sep)[-1].replace('.md', ''),
                        m_file.replace(DOC_FILES_DIR, '').replace(os.sep, '/')))
    text[0] = "# Index\n"
    f.writelines(text)

但似乎我不能同时使用标题和列表

【问题讨论】:

  • index view 是什么意思?此外,您的代码确实效率低下。您应该将MD_FILE_LIST 更改为生成器,并将带有for 循环的行与带有with 语句的行交换(然后将打开模式从append 更改为write
  • @Olian04,感谢您的提示,我将很快在我的代码中修复,在这里我将进行更新
  • 你的输出看起来应该是这样,你又问了什么问题?
  • @Olian04,可能是 Typora,但图片显示了从标记生成的 html,而不是纯文本文件
  • 你知道你正在生成一个降价文件吗?不是一个html文件?这是markdown中的链接:[name](link),这是html中的链接:&lt;a href="link"&gt;name&lt;a/&gt;。如果您希望输出看起来像一个网站,那么您需要生成一个 .html 文件,而不是 .md 文件。

标签:
python
markdown