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

如何验证字符串格式日期是否属于文件名指定的日期区间?

问题描述

Windows系统文件名无法使用冒号(:),因此用pp替代。when目录下存在两种格式的文件:

  • 单一日期格式:例如2023-02-05 00pp00 am.txt
  • 日期区间格式:通过_--_分隔起始与结束日期,例如2022_-_12_-_29 12pp33 am _--_ 2023_-_01_-_25 19pp13 pm.txt

给定输入日期字符串input_to_search_in_folder = "2022_-_01_-_05 12:33 am",需要验证该日期是否匹配单一日期文件,或落在某个区间文件的日期范围内;匹配成功则读取并打印对应文件内容。

解决方案

以下是完整实现代码:

import os
from datetime import datetime

# 定义统一的日期格式化规则
DATE_FORMAT = "%Y-%m-%d %I:%M %p"

# 处理输入日期,转换为可比较的datetime对象
input_date_str = "2022_-_01_-_05 12:33 am"
processed_input = input_date_str.replace("_-_", "-")
target_date = datetime.strptime(processed_input, DATE_FORMAT)

# 遍历目录查找匹配文件
found = False
for filename in os.listdir("when"):
    # 仅处理txt文件
    if not filename.endswith(".txt"):
        continue
    
    # 还原文件名中的日期格式,去除后缀
    processed_name = filename.replace("_-_", "-").replace("pp", ":").rstrip(".txt")
    
    # 判断文件是单一日期还是区间日期类型
    if "_--_" in processed_name:
        # 拆分起始、结束日期并转换为datetime对象
        start_str, end_str = processed_name.split("_--_")
        start_date = datetime.strptime(start_str.strip(), DATE_FORMAT)
        end_date = datetime.strptime(end_str.strip(), DATE_FORMAT)
        
        # 检查目标日期是否在区间内(包含边界)
        if start_date <= target_date <= end_date:
            with open(os.path.join("when", filename), "r", encoding="utf-8") as f:
                content = f.read()
            print(repr(content))
            found = True
            break
    else:
        # 匹配单一日期文件
        file_date = datetime.strptime(processed_name, DATE_FORMAT)
        if file_date == target_date:
            with open(os.path.join("when", filename), "r", encoding="utf-8") as f:
                content = f.read()
            print(repr(content))
            found = True
            break

if not found:
    print("未找到匹配的文件")

核心逻辑说明

  1. 日期标准化:通过统一的DATE_FORMAT,将所有日期字符串转换为datetime对象,确保日期比较的准确性。
  2. 输入预处理:把输入中的_-_替换为-,转换成标准日期格式后解析为可操作的datetime实例。
  3. 文件类型判断:通过文件名中是否包含_--_区分单一日期和区间日期文件,分别处理匹配逻辑。
  4. 安全文件读取:使用with语句自动管理文件句柄,避免资源泄漏问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:35:20