如何用Python从查找表读取三变量构建循环以优化重复代码?
批量处理查找表中的文件任务(替代290次重复代码)
核心思路
将查找表读入DataFrame,循环遍历每一行提取myfile、pname、ename三个变量,复用你的文件处理逻辑完成批量操作,彻底告别重复粘贴代码。
具体实现步骤
读取查找表
假设你的查找表是CSV/Excel格式,用Pandas直接读取:import pandas as pd # 读取查找表(Excel格式替换为pd.read_excel) lookup_table = pd.read_csv("你的查找表路径.csv")封装单文件处理逻辑
把你原来处理单个文件的代码封装成函数,接收三个变量作为参数:def process_single_file(myfile, pname, ename): # 移除txt文件首行 with open(myfile, 'r', encoding='utf-8') as f: content_lines = f.readlines()[1:] # 跳过第一行 # 构建带STA_Parm列的DataFrame # 这里根据你txt文件的实际分隔符调整,比如逗号分隔用split(',') df = pd.DataFrame([line.strip().split() for line in content_lines], columns=[pname, ename]) df['STA_Parm'] = f"{pname}_{ename}" # 按需定义STA_Parm的取值规则 # 导出为CSV output_path = f"处理结果_{pname}_{ename}.csv" df.to_csv(output_path, index=False, encoding='utf-8')循环执行批量处理
遍历查找表的每一行,提取参数并调用处理函数:# 用itertuples遍历比iterrows性能更优 for row in lookup_table.itertuples(index=False): # 提取三个变量(确保查找表列名和此处一致) target_file = row.myfile param_p = row.pname param_e = row.ename # 执行处理 process_single_file(target_file, param_p, param_e) print(f"完成 {param_p}_{param_e} 文件处理")
注意事项
- 确认查找表的列名和代码中提取的
myfile、pname、ename完全匹配,包括大小写 - 如果txt文件的内容格式特殊(比如固定宽度、自定义分隔符),需要调整
split()的参数或改用pd.read_csv直接读取处理后的内容 - 导出CSV的文件名可根据需求自定义,避免不同任务的结果文件互相覆盖
内容的提问来源于stack exchange,提问作者RFGuy
相关产品推荐
相关产品推荐

