Python实现每日Excel文件自动读取清洗与重命名功能求助
问题解决:自动化Excel清洗脚本的报错修复
你的代码存在几个关键问题,逐一修正如下:
- 语法错误:
pd.read_excel(io=next(xlsx_file)缺少闭合右括号,导致代码无法解析。 - 生成器耗尽异常:
folder.glob()返回的是生成器对象,第一次调用next(xlsx_file)已经取到唯一的文件,再次调用会直接抛出StopIteration。 - 日期格式不匹配:原文件名的日期是两位格式(如
07),但date.today().month返回的是单数字整数(如7),导致匹配不到目标文件。 - 保存逻辑错误:保存时没有按照要求生成
_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
相关产品推荐
相关产品推荐

