如何用占位符遍历路径仅年份不同的同名Excel文件?若不可行该怎么做?
遍历不同年份文件夹下的同名Excel文件:占位符方案及替代方法
当然可以通过「Year」的占位符思路来实现这个需求,而且这是非常直接高效的做法!本质上就是把路径中变化的「Year」部分用变量代替,再结合循环来遍历所有目标年份对应的文件夹。
一、用占位符(变量)实现的具体步骤
- 第一步:先整理出所有需要遍历的年份列表,比如
years = [2020, 2021, 2022, 2023] - 第二步:定义路径模板,把变化的Year部分用占位符替换,比如用Python的f-string或者格式化字符串来实现
- 第三步:循环年份列表,逐个生成完整路径,然后处理对应的Excel文件
代码示例(Python)
import os import pandas as pd # 你需要处理的目标年份列表 target_years = [2020, 2021, 2022, 2023] # 路径模板,{year}就是Year的占位符 path_template = r"C:\Main\Division\Reports\{year}\Data.xls" for year in target_years: full_path = path_template.format(year=year) # 先检查文件是否存在,避免报错 if os.path.exists(full_path): df = pd.read_excel(full_path) # 这里写你对Excel文件的处理逻辑,比如合并数据、统计分析等 print(f"已处理{year}年的文件:{full_path}") else: print(f"警告:{year}年的文件不存在,请检查路径:{full_path}")
二、不确定年份列表时的替代方法
要是你不确定Reports目录下有哪些年份文件夹,或者不想手动维护年份列表,可以自动遍历目录下的子文件夹,筛选出符合年份格式的文件夹,再拼接文件路径:
代码示例(Python)
import os import pandas as pd # 基础路径 base_dir = r"C:\Main\Division\Reports" # 固定的文件名 file_name = "Data.xls" # 遍历Reports下的所有子文件夹 for folder_name in os.listdir(base_dir): folder_path = os.path.join(base_dir, folder_name) # 检查是否是文件夹,且名称是数字格式的年份 if os.path.isdir(folder_path) and folder_name.isdigit(): full_path = os.path.join(folder_path, file_name) if os.path.exists(full_path): df = pd.read_excel(full_path) # 处理逻辑 print(f"已处理{folder_name}年的文件:{full_path}") else: print(f"警告:{folder_name}年的文件夹下未找到{file_name}")
两种方案的适用场景
- 占位符+固定年份列表:适合你明确知道要处理哪些年份的场景,代码简洁且可控性强;
- 自动遍历文件夹:适合年份文件夹不固定、需要自动发现的场景,灵活性更高。
内容的提问来源于stack exchange,提问作者Beginner Kruman
相关产品推荐
相关产品推荐

