去年年中我接手了一个很烦人的任务。每天要核对三个系统的数据,把几十条记录对起来,然后把结果填进一张固定的表格里。看起来不复杂,但做起来特别耗时间。
早上打开电脑,先导出系统A的报表,再登录系统B导一份,系统C的还得单独去下载。三份文件格式不一样,A是Excel,B是CSV,C是个网页页面。我要一条一条对着看,哪个订单在A里有但在B里没有,哪个金额对不上。光是找到差异就要花掉一两个小时。
找到问题后还得手动改表格。改完表格要写邮件说明情况,抄送给好几个同事。一天下来光这个活就能占掉四五个小时。要是碰上数据量大的日子,可能一整天都泡在里面。
我本来以为这就是工作的一部分,直到有次加班到晚上八点多,对着满屏幕的数字眼睛都花了。那天我就在想,这事情能不能让电脑帮我干。
其实很早以前就知道Python能处理Excel和网页,但一直没认真学。那天回家后我翻出之前买的一本Python书,花了两个晚上把基础语法看了一遍。周末就开始动手写了。
第一个版本只做了最核心的功能:读取系统A和系统B的文件,对比订单号和金额,把差异输出到一个新表格里。这一步花了我半天时间调试。因为两个系统对同一个字段的命名不一样,一个叫"order_id",另一个叫"订单编号",需要手动指定对应关系。
最难的是处理系统C的网页数据。那个系统没有提供导出功能,只能人工登录后复制粘贴。我查了很久,最后用Selenium库模拟浏览器操作,让它自动登录、点击查询、抓取结果。这个过程折腾了整整一天。
写完初版后我试运行了一次,跑了大概三分钟,结果出来了。我对着结果手动检查了一遍,发现有三处错误。查代码后发现是日期格式判断出了问题,有个系统用年月日,另一个用月日年。改好后再跑,就对了。
接下来我又加了几个小功能。自动填表格、自动写邮件、自动把附件存到指定的文件夹里。每天早上到公司,双击一下脚本,去倒杯水的功夫回来,屏幕上的表格已经填好了,邮件的草稿也躺在邮箱里,我只需要点一下发送就能下班。
记得第一次完全不用手动做这个任务那天,我上午十点就忙完了别的事,下午看了一下午技术文档。同事路过问我今天怎么这么轻松,我说写了个脚本。他当时不信,我当着他面跑了一次。看到屏幕上刷刷刷地闪过日志,不到十分钟就把一天的工作做完了,他愣了好几秒。
从每天四个小时变成十分钟,节省下来的时间我可以用来学新东西。后来我把这个脚本优化了三次,加了异常处理和日志记录,还写了个简单的界面,其他部门的同事也能用。领导知道后让我在公司内部做了个分享,我讲的时候底下好几个人记笔记。
现在说起来好像很轻松,但当时写代码调试的过程一点都不轻松。看不懂报错信息就去搜索引擎里一条一条翻,满屏的英文看着头晕。有几次改完代码跑出来全是错的,气得想砸键盘。但每次解决一个问题,脚本跑出来结果正确的时候,那种感觉特别好。
我想说的是,很多看起来必须手工干的活,其实都能用工具替代。最靠谱的办法是,花一段时间学点编程基础,然后针对自己手头最烦人的工作写个脚本。不用追求完美,能跑就行。跑通了之后再慢慢改进。这个回报率真的很高,哪怕你平时不写代码,学会用工具帮自己干活也值了。