You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:基于Pandas按日期分组整理Markdown文件修改时间

我来帮你搞定这个按日期分组排序的需求!咱们一步步来解决:

首先先修正你现有代码里的小问题——你用到了ostime模块但没导入,先补上。接下来我们要对Pandas数据做几步处理,最终生成你想要的Markdown格式输出。

完整解决方案代码

import pandas as pd
from datetime import datetime as dt
from pathlib import Path
from dateutil import parser
import os
import time

File_vault = "any folder path"  # 替换成你的实际文件夹路径
File_ext = "*.md"
List_names = []
List_dates = []

# 递归遍历所有Markdown文件
for file in Path(File_vault).rglob(File_ext):
    file_stamp = os.path.getctime(file)
    # 用splitext更稳妥地去除文件后缀(避免原replace方式的匹配问题)
    List_names.append(os.path.splitext(file.name)[0])
    List_dates.append(parser.parse(time.ctime(file_stamp)))

# 转换为DataFrame
df = pd.DataFrame({
    'datetime': List_dates,
    'file': List_names
})

# 1. 添加辅助列:提取日期、格式化时间、星期几
df['date'] = df['datetime'].dt.date  # 仅保留日期部分,作为分组依据
df['time'] = df['datetime'].dt.strftime('%H:%M')  # 格式化为HH:MM样式
df['weekday'] = df['datetime'].dt.strftime('%A')  # 提取星期几的英文名称

# 2. 按datetime从新到旧整体排序,确保分组后条目顺序正确
df = df.sort_values('datetime', ascending=False)

# 3. 按日期分组,生成目标Markdown内容
markdown_output = ""
for date_val, group in df.groupby('date'):
    # 格式化日期标题:比如26.7 (Sunday)
    date_str = date_val.strftime('%d.%m')
    weekday_str = group['weekday'].iloc[0]
    markdown_output += f"## {date_str} ({weekday_str})\n"
    
    # 遍历组内条目,添加时间和文件名
    for _, row in group.iterrows():
        markdown_output += f"{row['time']} | {row['file']}\n"
    markdown_output += "\n"  # 组与组之间空一行分隔

# 打印结果,也可以保存到文件
print(markdown_output)

代码说明

  1. 修正初始代码:补上缺失的ostime导入,改用os.path.splitext处理文件名后缀,避免原replace方法可能出现的匹配错误。
  2. 添加辅助列
    • date:提取datetime的纯日期部分,作为分组的核心键;
    • time:把时间格式化为HH:MM,完全匹配你想要的输出样式;
    • weekday:提取星期几的名称,用于标题显示。
  3. 整体排序:先对整个DataFrame按datetime降序排列,这样分组后每个日期下的条目自然是从新到旧的顺序。
  4. 分组生成Markdown:遍历每个日期分组,先生成带星期的日期标题,再逐个添加组内的时间与文件名条目。

输出效果

运行后会生成你期望的格式:

## 26.07 (Sunday)
13:33 | File1
10:15 | File2

## 25.07 (Saturday)
22:30 | File3
10:34 | File5
10:01 | File4

如果需要把结果保存到文件,只需在最后添加:

with open('file_summary.md', 'w', encoding='utf-8') as f:
    f.write(markdown_output)

内容的提问来源于stack exchange,提问作者dxc

火山引擎 最新活动