如何批量修改 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 实现呢?
实现步骤
- 安装并配置 Python 环境,这里不多做叙述。
- 新建一个 Python 文件,文件名称可随意命名,如:
update_markdown.py
- 在新建的文件中添加以下代码:
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
40import 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) - 在终端运行以上命令即可!