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

Python实现每日Excel文件自动读取清洗与重命名功能求助

问题解决:自动化Excel清洗脚本的报错修复

你的代码存在几个关键问题,逐一修正如下:

  1. 语法错误:pd.read_excel(io=next(xlsx_file) 缺少闭合右括号,导致代码无法解析。
  2. 生成器耗尽异常:folder.glob() 返回的是生成器对象,第一次调用next(xlsx_file)已经取到唯一的文件,再次调用会直接抛出StopIteration。
  3. 日期格式不匹配:原文件名的日期是两位格式(如07),但date.today().month返回的是单数字整数(如7),导致匹配不到目标文件。
  4. 保存逻辑错误:保存时没有按照要求生成_cleaned后缀的文件名,而是错误复用了已耗尽的生成器。

修正后的完整代码

import pandas as pd
from pathlib import Path
from datetime import date

# 目标文件夹路径
folder = Path("C:/Users/JHA4/Desktop/Code/Tourniquets/Cleaned")
# 生成两位格式的日期字符串(匹配原文件名的dd.mm.yyyy格式)
today = date.today()
date_str = f"{today.day:02d}.{today.month:02d}.{today.year}"
# 构造匹配原文件的名称模式
file_pattern = f"tourniquets_{date_str}_raw.xlsx"

# 获取所有匹配的文件(转为列表避免生成器耗尽问题)
matching_files = list(folder.glob(file_pattern))
if not matching_files:
    raise FileNotFoundError(f"未找到符合格式的文件:{file_pattern}")

# 读取目标Excel文件
df = pd.read_excel(io=matching_files[0])

# --- 在这里添加你的数据清洗逻辑 ---
# 示例:df = df.dropna(subset=["关键列"])
# 示例:df["日期列"] = pd.to_datetime(df["日期列"])

# 构造清洗后的文件名并保存
cleaned_filename = f"tourniquets_{date_str}_cleaned.xlsx"
df.to_excel(folder / cleaned_filename, index=False)  # index=False避免保存默认索引列

关键修改说明

  • 用{today.day:02d}和{today.month:02d}强制日期为两位数字,确保和原文件名格式完全匹配。
  • 将生成器转为列表list(folder.glob(...)),既可以检查文件是否存在,也避免了重复调用next的异常。
  • 单独构造清洗后的文件名,严格遵循tourniquets_当日日期_cleaned.xls的格式要求。
  • 添加了文件不存在的异常提示,方便快速排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:48:14