Python 自动化接单实战(一):把 CSV 需求做成配置驱动解析器
很多 Python 自动化需求看上去不同拆开后却很相似客户给一批 CSV 或 JSON 数据希望改字段名、转换类型、补默认值、做校验再输出一份干净文件。真正麻烦的地方通常不是写出第一版脚本而是规则经常变化。如果字段名、单位、阈值都写死在代码里客户每调整一次格式都要重新修改和部署。更稳妥的做法是把规则放到外部配置中让核心程序只负责读取规则并执行。我把这个思路做成了一份公开、可运行的最小样品源码与运行说明https://github.com/jhhjwei/codex-runner/tree/main/demos/config-driven-parser不依赖第三方库Python 3 可直接运行同时支持 CSV / JSON 输入、配置和输出包含样例数据、预期结果与端到端测试一、先把“会变的规则”从代码里拿出来样品中的配置文件用一行描述一个字段规则source,target,type,required,default,trim,case,multiplier,offset,min,max,choices device_id,id,string,true,,true,upper,,,,, temperature_c,temperature_f,float,true,,true,,1.8,32,-40,212, status,status,string,true,unknown,true,lower,,,,,online|offline|unknown这几行配置表达了三类常见需求device_id改名为id去掉首尾空格并转成大写摄氏温度乘以 1.8 再加 32输出华氏温度状态为空时使用unknown并限制在指定枚举范围内。这样做的价值不是少写几行代码而是把“业务变化”变成“修改配置”。字段顺序、目标名称、默认值和阈值变化时不需要碰核心处理逻辑。二、把类型转换与数据校验放在同一条流水线数据处理脚本最常见的问题是转换成功了却没有验证结果。例如字符串12.5被强行转成整数空值被默默写成0或者状态字段出现了未定义的新值。样品把每个字段依次经过以下步骤读取原始值 - 判断是否缺失 - 应用默认值 - 去除首尾空格 - 类型转换 - 大小写或数值换算 - 最小值、最大值、枚举校验 - 写入目标字段当某一行出现问题时程序不会只打印一句模糊的“转换失败”而是记录行号、字段和具体原因。合格数据进入输出文件错误记录进入独立 JSON 文件方便后续人工核验或二次处理。三、用可重复测试证明“能运行”展示代码时只有截图和描述远远不够。一个可交付的小型自动化至少应包含证据作用输入样例说明程序面对的数据结构配置样例说明哪些规则可调整预期输出明确正确结果是什么自动测试修改代码后快速判断是否破坏原功能README让没有参与开发的人也能运行这个样品的测试会真正启动命令行程序读取 CSV 配置和输入再把实际输出与expected.json比较。运行方式如下cddemos/config-driven-parser python-munittest-v主流程也可以直接执行python parser.py\--configconfig.csv\--inputinput.csv\--outputoutput.json\--errorserrors.json成功时会输出processed3 accepted3 rejected0四、从免费样品扩展成真实交付最小样品解决的是通用骨架真实项目通常还会增加以下能力读取和生成 Excel 文件批量处理多个目录或压缩包日期、金额、单位和字段依赖规则图形界面或网页上传入口定时执行、结构化日志与失败重试打包成 Windows 可执行文件输出处理统计和异常报告。报价前应先确认四件事输入样例、期望输出、数据规模和验收标准。范围清晰的小任务可以拆成一个 24–72 小时内可验证的固定交付规则还没说清楚时先做最小样例验证比直接堆功能更省时间。如果你手里也有重复处理 CSV、Excel 或 JSON 的工作可以提交一份脱敏样例和期望结果我会先免费判断是否适合自动化再确认范围与价格https://github.com/jhhjwei/codex-runner/issues/new?templatecode-fix-request.yml请勿在公开链接中提交密码、Cookie、Token、私钥或真实个人数据。 本文用配置驱动解析器展示了如何把 CSV 需求拆成可运行、可测试、可验收的自动化样品。 你最想先处理 CSV、Excel 还是 JSON 中的哪类重复数据问题 关注《Python 自动化接单实战》下一篇继续把同一套规则模型扩展到 Excel 批量清洗与异常报告。参考来源Dev.toContext Is KingHacker NewsIntroduction to Data-Oriented Design