You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将yyyy-MM-dd日期转为ddMMyyyy格式并匹配文件名找最新文件?

Python日期格式转换与文件名匹配方案

一、将date.today()生成的日期转为ddMMyyyy格式

date.today()返回的是datetime.date对象,本身不存储格式,我们可以直接用strftime()方法生成目标格式的字符串:

from datetime import date

today = date.today()
# 转换为ddMMyyyy格式的字符串
formatted_str = today.strftime("%d%m%Y")
print(formatted_str)  # 示例输出:28092022(假设当前日期为2022-09-28)

如果需要将该格式的字符串转回日期类型,使用strptime()方法即可:

# 从ddMMyyyy字符串还原为date对象
date_obj = date.strptime(formatted_str, "%d%m%Y")

二、将指定日期(如2022-09-28)转为28092022格式

分两种场景处理:

  1. 若输入是字符串格式的"2022-09-28":
from datetime import date

date_str = "2022-09-28"
# 先转为date对象,再格式化输出
date_obj = date.fromisoformat(date_str)
formatted_str = date_obj.strftime("%d%m%Y")
print(formatted_str)  # 输出:28092022
  1. 若输入已是date对象,直接调用strftime("%d%m%Y")即可,和第一部分方法一致。

三、用该格式匹配文件名找最新文件的可行性

完全可行,核心思路是提取文件名中的日期、比较日期先后,步骤如下:

  • 遍历目标目录下的文件
  • 从文件名中提取符合ddMMyyyy格式的日期片段(根据实际文件名结构,用正则或字符串切片实现)
  • 将提取的日期转为date对象,或直接通过字符串字典序比较(ddMMyyyy格式的字符串字典序与日期先后顺序一致)
  • 筛选出日期最新的文件

示例代码:

import os
import re
from datetime import date

target_dir = "/path/to/your/target/directory"
date_format = "%d%m%Y"
latest_date = None
latest_file = None

for filename in os.listdir(target_dir):
    # 用正则匹配文件名中的8位ddMMyyyy格式日期
    match = re.search(r'(\d{8})', filename)
    if match:
        date_str = match.group(1)
        try:
            file_date = date.strptime(date_str, date_format)
            # 更新最新文件记录
            if latest_date is None or file_date > latest_date:
                latest_date = file_date
                latest_file = filename
        except ValueError:
            # 匹配到的8位数字不是有效日期,跳过
            continue

if latest_file:
    print(f"最新文件:{latest_file}")
else:
    print("未找到符合日期格式的文件")

注意:需根据你的实际文件名结构调整日期提取逻辑,比如日期在固定位置时用字符串切片更高效,位置不固定时用正则更灵活。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:01:44