如何批量修改 Markdown 文件的 Front-matter 信息?

Front-matter 简介

  • Front-matter 是文件开头的 YAML 或 JSON 代码块,用于配置写作设置。 以 YAML 格式书写时,Front-matter 以三个破折号结束;以 JSON 格式书写时,Front-matter 以三个分号结束。
  • 示例:
    1
    2
    3
    4
    ---
    title: Hello World
    date: 2013/7/13 20:46:25
    ---

需求描述

由于以前写的很多 Markdown 文件 Front-matter 信息不完整,现如今想批量修改其 Front-matter 信息,如:添加 updated 字段,将 tags 字段中的中文逗号换为英文逗号等,那么具体该如何使用 Python 实现呢?

实现步骤

  1. 安装并配置 Python 环境,这里不多做叙述。
  2. 新建一个 Python 文件,文件名称可随意命名,如:update_markdown.py
  3. 在新建的文件中添加以下代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import os
    from datetime import datetime

    # 定义目录路径,这里需要改为实际需要处理的路径
    directory_path = r"C:\\Users\\admin\\Desktop\\Test"

    # 获取目录下所有的 Markdown 文件
    markdown_files = [f for f in os.listdir(directory_path) if f.endswith('.md')]

    # 遍历每个 Markdown 文件
    for file_name in markdown_files:
    file_path = os.path.join(directory_path, file_name)

    # 打印处理的文件名
    print(f"Processing file: {file_name}")

    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as file:
    content = file.readlines()

    # 检查文件中是否已经包含 updated 字段
    if any('updated:' in line for line in content):
    print(f"File {file_name} already contains 'updated' field, skipping...")
    continue

    # 获取当前时间并格式化
    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

    # 在第三行下添加新的一行
    if len(content) > 2:
    content.insert(3, f'updated: {current_time}\n')

    # 将第五行中的中文逗号替换为英文逗号
    if len(content) > 4:
    content[4] = content[4].replace(',', ', ')

    # 将修改后的内容写回文件
    with open(file_path, 'w', encoding='utf-8') as file:
    file.writelines(content)

  4. 在终端运行以上命令即可!
本文结束 感谢您的阅读
正在加载今日诗词....