以下是一个简单的Python脚本,它可以将Markdown文档按照二级标题(##)进行拆分,并保存到指定的输出路径。
import os
def split_markdown_by_headers(input_path, output_folder):
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 初始化变量
current_file = None
current_content = []
# 读取输入文件
with open(input_path, 'r', encoding='utf-8') as file:
for line in file:
# 检查是否是二级标题
if line.startswith('## '):
# 如果已经有打开的文件,先保存
if current_file:
save_current_file(current_file, current_content, output_folder)
current_content = [] # 重置内容
# 新的文件名是二级标题(去掉'## ')
current_file = line.lstrip('# ').strip().replace(' ', '_') + '.md'
# 将当前行添加到内容列表
current_content.append(line)
# 保存最后一个文件
if current_file:
save_current_file(current_file, current_content, output_folder)
def save_current_file(filename, content, folder):
# 拼接完整的文件路径
output_path = os.path.join(folder, filename)
# 写入文件
with open(output_path, 'w', encoding='utf-8') as file:
file.writelines(content)
# 自定义输入路径
input_path = input("请输入Markdown文件的路径: ")
# 输出路径固定
output_path = 'output_md_files'
# 调用函数进行拆分
split_markdown_by_headers(input_path, output_path)
运行这段代码时,它会提示你输入Markdown文件的路径。然后,它会在当前目录下创建一个名为output_md_files的文件夹,并将拆分的Markdown文件保存到该文件夹中。每个文件以对应的二级标题命名。
如果是从三级代码开始拆分,那么代码和和之前的示例非常相似,唯一的变化是检查行是否以### 开头,这是Markdown中的三级标题格式。
if line.startswith('### '):