花了一天时间,用 Python 写了三十行代码,解决了之前三百行的重复劳动.
花了一天时间,用Python写了三十行代码,解决了之前三百行的重复劳动。
事情是这样的。我手头有一堆Excel表格,每月都要处理。每个表格里有一千多行数据,我需要做的是把特定几列提取出来,再按照某种规则排序,最后生成一个汇总报告。这活儿以前是我手动复制粘贴,后来用了几次VBA宏,但每次换个格式就崩。
上个月我花了一天时间,重新写了三百行VBA代码,调试得头晕眼花。结果这个月客户又改需求了,加了一个新的筛选条件。我把代码改来改去,发现逻辑全乱成了一锅粥。
我坐在电脑前,盯着那三百行代码,难受。
突然想起自己去年学过一点Python,虽然很不熟练,但至少能跑通基本程序。我试着打开一个叫pandas的库,装了环境,然后开始写。
一开始我写得很慢,每写一行都要查文档。半小时后,我发现这个库处理表格就像切菜一样简单。读文件只要一行,筛选数据也是一行,排序一行,导出又是一行。 我反复检查,发现真的不需要写复杂的循环,也不需要处理什么边界条件。
写到第二十行的时候,我把客户要求的三个筛选条件都加上了。写到第三十行的时候,程序已经能把不同来源的数据合并到一起,还能自动生成带有格式的Excel报告。
我试着跑了一次,全程不到两秒。我以为是哪里出错了,检查了一下生成的文件,发现完全正确。那时候我愣住了,就这么简单?
我以前那三百行VBA代码,光处理读写文件就用了将近五十行。还有各种变量的定义,一个个列名的匹配,容错处理,甚至还要去修改Excel的底层设置。Python里这些全被库函数一把包办了。三十行代码,比我手算还省事。
我把这个脚本放在桌面上,每次需要跑的时候双击就好了。同事看到后问我怎么搞的,我说就用Python写了个小工具。他觉得很惊讶,说这活不是需要干一天吗。我说以后都不用了,点一下就行。
后来我把这个方法教给另外两个同事,她们也学会了。我们三个人每月省下来的时间,加起来差不多有两天。这些时间就拿去做其他更需要动脑子的工作,比如分析数据背后的原因。
回想起来,最难的不是写代码,而是决定走出舒适区。我以前一直觉得写VBA是自己的工作习惯,用熟了改起来麻烦。但这次被逼到死角,反而发现自己之前绕了远路。
现在想想,我要是更早去学Python就好了。不过也没什么,至少现在开始用上了。以后遇到类似的重复工作,我第一反应就是能不能用几十行代码搞定。毕竟,代码是用来减少烦恼的,不是用来制造麻烦的。