如何优化Python脚本,实现CSV新增列时无需修改Jinja2渲染代码?
解决CSV新增列需手动修改Jinja2渲染脚本的问题
核心思路是用csv.DictReader读取CSV文件,它会自动把每一行数据转换成以列名为键的字典,直接把这个字典传给Jinja2的render()方法,新增列时脚本完全不用改,模板里直接用新列名调用就行。
改造后的脚本示例
import csv from jinja2 import Environment, FileSystemLoader # 加载Jinja2模板 env = Environment(loader=FileSystemLoader('.')) template = env.get_template('stackoverflow.j2') # 读取CSV文件 with open('stackoverflow.csv', 'r', encoding='utf-8') as csv_file: # 用DictReader自动生成列名映射的字典 reader = csv.DictReader(csv_file) for row in reader: # 直接把整行字典传给render,不用手动列参数 output = template.render(row) # 这里可以处理输出,比如写入文件或打印 print(output)
模板使用说明
模板里直接用CSV的列名作为变量即可,比如原来的列用{{ username }},新增的address列直接写{{ address }}就行,完全不需要修改脚本。
内容的提问来源于stack exchange,提问作者demich89
相关产品推荐
相关产品推荐

