Python 自动化脚本如何写得更稳:从能跑到可维护的 7 个细节 很多 Python 自动化脚本一开始都很简单读一个文件、调用一个接口、生成一份报表或者把某个平台上的重复操作串起来。第一版能跑通并不难真正难的是让它在一个月后、三个月后、换一台机器后仍然稳定工作。尤其是用于办公、内容发布、数据同步、批量处理的脚本一旦进入日常流程就不能只追求“今天能跑”而要提前考虑异常、日志、配置、重试和可维护性。!--IMAGE:1--第一件事是把配置和代码分开。很多脚本会把 cookie、文件路径、接口地址、标题内容、开关参数直接写在函数中短期看很方便长期看会让修改变得危险。更好的做法是把稳定逻辑放在函数里把经常变化的内容集中放在 main 方法、配置文件或环境变量中。例如图片路径、文章标题、标签、输出目录都应该集中管理业务逻辑只负责读取这些配置并执行流程。这样后续换账号、换图片、换文章时不需要在一堆函数里翻来翻去。第二件事是让输入格式明确。一个自动化脚本通常会处理本地文件、网络图片、接口 JSON、Excel 表格或命令行参数。如果输入没有约束脚本就会在各种边缘情况里悄悄出错。比如图片上传流程里可以允许 image_path 同时接收本地路径和 http/https 网络 URL但内部必须统一成列表再逐个转换成 bytes、mime type 和后缀。外部使用者只需要知道“这里填图片源”内部实现则负责判断来源、下载网络图、读取本地文件、上传到图床。!--IMAGE:2--第三件事是把关键步骤拆成小函数。以发布文章为例一个完整流程可能包含初始化页面、申请图片上传签名、上传图片、检查内容质量、检查用户状态、风控检测、图片检测、正式发布和保存历史版本。如果所有逻辑都写在一个函数里出了问题只能从头读到尾。拆成小函数之后每一步都有明确输入和输出也方便在日志里标记当前执行到了哪里。脚本不是越短越好而是每一段职责越清楚越好。第四件事是重视日志。自动化脚本最怕的不是报错而是不知道错在哪里。建议每个外部动作都输出一条可读日志例如 image uploaded、quality score ok、risk check ok、publish ok。日志里不要只写“成功”或“失败”最好带上关键上下文比如文章 ID、图片 URL、质量分、接口返回 code。这样当平台规则变化、cookie 失效、接口参数缺失时可以第一时间定位到具体步骤而不是猜测整个流程都坏了。第五件事是对网络请求做超时和错误处理。requests 默认没有超时如果不显式传 timeout脚本可能因为一个卡住的连接一直挂在那里。对于下载网络图片、上传文件、调用发布接口这类动作应该根据场景设置 30 秒、90 秒或 120 秒的超时。拿到响应后也不要默认都是 JSON最好捕获解析异常并把前几百个字符的返回内容带到错误信息里。很多平台在登录失效时返回的是 HTML 登录页不做判断就会出现难懂的 JSON 解析错误。第六件事是尽量复用真实抓包里的参数方式。自动化发布类脚本尤其要注意这一点不是只要接口能请求通就行参数结构、Content-Type、签名头、图片 HTML 结构、来源字段都应该尽量和浏览器保持一致。比如 CSDN 的网络图片并不是直接把外链插入正文而是先下载图片再申请上传签名上传到 CSDN 图床最后把返回的 imageUrl、width、height 拼成 img 标签。这种细节会影响后续图片审核、封面识别和正文检查。第七件事是保留可替换空间。很多脚本一开始只服务一个账号、一个平台、一个目录但用久之后需求会变多今天要发本地图明天要发网络图今天只发一张明天要多张今天只发布明天要先保存草稿。设计时不用过度抽象但可以让入口参数更自然。例如 image_path 统一写成列表里面既可以放本地文件也可以放网络 URL正文用 !--IMAGE:1--、!--IMAGE:2-- 这样的占位符控制插入位置。这样既简单又能覆盖大多数变化。总结一下稳定的 Python 自动化脚本不是靠复杂框架堆出来的而是靠一组朴素但有效的工程习惯配置集中、输入清晰、函数拆分、日志完整、超时明确、参数对齐、入口可替换。脚本越是用于真实工作流越应该把这些细节补上。能跑通只是第一步能被自己反复使用、被别人接手、出错时能快速定位才算真正有价值。