【发布时间】: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中的链接:<a href="link">name<a/>
。如果您希望输出看起来像一个网站,那么您需要生成一个.html
文件,而不是.md
文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python中的markdown文件从递归文件夹自动生成Markdown索引 - Python技术站