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

Python如何根据输入日期读取指定Excel并匹配前1工作日的规则命名Excel

实现方案

依赖导入

import pandas as pd
from datetime import datetime, timedelta
import glob
import os

核心实现逻辑

  • 保留你原有的用户输入接收、日期字符串拼接逻辑
  • 计算输入日期的前1个工作日,自动跳过周六周日
  • 用通配符拼接文件匹配规则,模糊匹配符合命名要求的第二个Excel文件
  • 读取匹配到的文件

完整可运行代码示例

# 1. 接收用户输入,拼接目标日期字符串(原有逻辑可直接复用)
year = input("请输入年份:")
month = input("请输入月份:")
day = input("请输入日期:")
# 补全月、日的前导零,拼接为YYYYMMDD格式
input_date_str = f"{year}{month.zfill(2)}{day.zfill(2)}"
input_date = datetime.strptime(input_date_str, "%Y%m%d")

# 2. 计算前1个工作日
# 方案1:直接用pandas内置方法自动跳过周末,代码更简洁
prev_workday = pd.bdate_range(end=input_date, periods=2)[0]
prev_workday_str = prev_workday.strftime("%Y%m%d")

# 方案2:不想依赖pandas的工作日能力可以用手写判断逻辑,效果一致
'''
delta = 1
while True:
    temp_date = input_date - timedelta(days=delta)
    # weekday返回值0=周一、4=周五、5=周六、6=周日
    if temp_date.weekday() < 5:
        prev_workday_str = temp_date.strftime("%Y%m%d")
        break
    delta += 1
'''

# 3. 模糊匹配符合规则的第二个Excel文件
# *是通配符,可匹配下划线后的任意数字/字符后缀
match_pattern = os.path.join(r'K:\Test', f'Test_Value_Serie_After_{prev_workday_str}_*')
match_files = glob.glob(match_pattern)

# 匹配失败抛出异常,可根据需求调整错误处理逻辑
if not match_files:
    raise FileNotFoundError(f"未找到符合规则的文件,匹配规则为:{match_pattern}")

# 取第一个匹配到的文件,若存在多个匹配结果可自行调整选择规则
second_file_path = match_files[0]

# 4. 读取第二个Excel文件
df_second = pd.read_excel(second_file_path)

注意事项

  • 若需要额外排除法定节假日,可引入chinese_calendar等第三方库扩展工作日判断逻辑
  • 同路径下存在多个匹配文件时,可根据修改时间、文件名后缀数字大小等规则调整文件选择逻辑
  • 路径字符串前加r是为了避免转义字符解析错误,确保路径读取正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:24:03