每天早上 9 点,一份包含长江干线水位、三峡过闸动态和气象要素的 Word 日报,会准时出现在我的工作目录里。这件事我让机器干了半年,今天把整套流水线拆开讲讲。
整体架构
$ tree daily-report/ daily-report/ ├── fetch_weather.py # 抓气象数据(风/雾/强对流) ├── fetch_lock.py # 抓三峡-葛洲坝过闸动态 ├── render_docx.py # python-docx 渲染 Word └── run.sh # cron 入口
原则很简单:抓取 → 清洗 → 渲染 → 落盘,每一步独立成模块,任何一步挂了不影响前面已完成的产物。
cron 配置
# 每天 09:00 执行,日志追加到 report.log 0 9 * * * cd /opt/daily-report && ./run.sh >> report.log 2>&1
坑:cron 的 PATH 和登录 shell 不一致,脚本里务必用绝对路径调用 python 解释器。
几点经验
第一,气象数据源要准备至少两个,主源超时立刻切备用,日报不能因为接口抖动而开天窗。第二,Word 渲染用 python-docx 足够,别上重型方案。第三,落盘文件名带日期:航运日报-YYYY-MM-DD.docx,方便归档和检索。
把重复劳动交给机器,人只负责审阅和判断——这才是自动化的意义。