Python如何基于带::占位符的固定模板填充内容后写入文件?
完全可以实现,两种常用方案供你根据使用场景选择:
方案1:纯文本模板文件方案
如果最终需要输出的就是示例中带固定结构、::分隔符的文本格式,直接用纯文本模板最省事,不需要额外做格式转换。
- 先制作模板文件,把需要替换的位置改成自定义占位符,比如命名为
request_template.txt,内容参考:
REQUEST DETAILS RITM :: {{RITM}} STASK :: {{STASK}} EMAIL :: {{EMAIL}} USER :: {{USER}} CONTENT DETAILS TASK STATE :: {{TASK_STATE}} RAISED ON :: {{RAISED_ON}} CHANGES :: {{CHANGES}}
- Python 直接读取模板做字符串替换即可,无需第三方依赖,示例代码:
# 读取模板文件 with open("request_template.txt", "r", encoding="utf-8") as f: template = f.read() # 定义需要填充的字段值 fill_data = { "RITM": "RITM1234", "STASK": "TASK1234", "EMAIL": "abc@abc.com", "USER": "JOHN JOY", "TASK_STATE": "OPEN", "RAISED_ON": "12-JAN-2021", "CHANGES": "REMOVE LOG" } # 批量替换占位符 for key, val in fill_data.items(): template = template.replace(f"{{{{{key}}}}}", val) # 导出填充完成的最终文件 with open("final_output.txt", "w", encoding="utf-8") as f: f.write(template)
如果模板有更复杂的逻辑(比如条件展示、循环生成列表),也可以用Jinja2库处理,支持100行以上的长模板无压力。
方案2:TOML 结构化存储方案
如果不需要直接输出::格式的文本,只是要把字段作为配置存储、做逻辑处理再导出其他格式,用TOML更易维护,不需要处理字符串占位符。
- 制作TOML模板文件,比如命名为
request_template.toml,内容参考:
[REQUEST_DETAILS] RITM = "" STASK = "" EMAIL = "" USER = "" [CONTENT_DETAILS] TASK_STATE = "" RAISED_ON = "" CHANGES = ""
- Python 用tomli、tomli-w库直接读写键值即可,示例代码:
import tomli import tomli_w # 读取TOML模板 with open("request_template.toml", "rb") as f: config = tomli.load(f) # 直接给对应字段赋值 config["REQUEST_DETAILS"]["RITM"] = "RITM1234" config["REQUEST_DETAILS"]["STASK"] = "TASK1234" config["CONTENT_DETAILS"]["TASK_STATE"] = "OPEN" # 其他字段同理赋值 # 保存为填充完成的TOML文件 with open("filled_config.toml", "wb") as f: tomli_w.dump(config, f) # 如果需要导出::格式的文本,遍历键值拼接字符串即可
选择建议
- 最终输出为
::格式文本的场景选方案1,流程更直接 - 需要对字段做校验、逻辑判断、对接其他系统的场景选方案2,可维护性更高
内容的提问来源于stack exchange,提问作者nonuser
相关产品推荐
相关产品推荐

