挺想回答一下这个问题的。
我是非码专业,从2019年开始接触python。
一开始其实需求非常简单,就是为了处理大量的Excel表格。其实本来四大的工作经历已经让我excel的水平比较高了,各种跨表定位、查询,复杂的字符串操作,还有vba函数都可以处理。但是python铺天盖地的宣传还是让我觉得,好像有必要学习一下这个工具。所以就简单学习了一下语法,开始一边学一边写了。
第一阶段-单机脚本:
我遇到的第一个场景是这样的:公司的某个银企直连支付平台需要维护全国所有银行的所有支行的“联行号”或者说是大额支付行号,这个行号是人行下发的,数据量大概在20万条记录左右。本来处理这个事情很简单,把数据全部导入excel,然后匹配一下看看新的数据新增了哪些,变更了哪些,然后去系统里面更新就可以了。但是这样做有个问题,一个是excel处理这个量的数据会非常卡,有时候甚至运算到一半直接崩溃(8G内存办公电脑)。第二个是即使简单的vlookup还有大量的同事不会用,所以如果每次都是excel来处理活就砸在自己手里了,工作安排也没有任何风险冗余。所以我就面向百度编程,靠调包平凑了一个脚本出来,没有UI,没有设计结构,一个py文件处理所有流程,然后把执行py文件的bat也放在一起作为入口:
而脚本写的也完全没有任何规范,变量随意命名,面向过程变成:
但是至少,可以稳定的运行,而且考虑到excel动辄需要五分钟十分钟的运算,啥都不能干,这个脚本至少可以稳定的在一两分钟内跑完。
完成这个脚本以后,我只需要每周执行一下bat文件,非常舒服,让我一下尝到了python开发的甜头,从此看啥都是个钉子,开始自己折腾。
第二阶段-内网爬虫:
自从成功调用excel相关的python包以后,就一直停滞在使用python操作excel,说实话,对于一般的工作场景来说,其实效率并没有高。就像上面的例子说的那样,可能本来十分钟的活,做好以后只需要几秒,但是自己敲代码可能搞不好就要半天。所以渐渐的觉得自己是不是舍近求远了。
然后突然有一天,主管机关来检查了,需要查看我们报销流程的审批情况。检查人员挑了五六十条流程,要看系统审批记录。这个其实本来应该是信息技术部的工作,可以从流程引擎相关的数据库表里面导出记录来。但是呢主管机关是财务条线的,他们的要求很简单,只要看页面上打印下来的审批记录,不要看数据库的数据。信息的同事觉得,这不是“给我切十斤寸金软骨”的抬杠需求码,直接就反馈说做不了,要么给个权限到系统里面自己看吧。可是我们不敢得罪检查人员啊,领导一拍桌子说,自己给他们导吧!活就到我手上了。
如果真的手工做,我估摸着要搞一两个小时,时间长不说还非常无聊。然后我想起python不是卖课的时候一直号称适合做爬虫吗。这不巧了吗。
马上打开编程环境:百度。然后了解了一下爬虫,啊不是,了解了一下几个可以操作浏览器的包的使用方法。再次开始掉包侠的工作。
这次非常有趣,爬虫常见的比较难处理的情况在我这边都不存在,首先是用户登录,我们因为是内网业务所以没有任何反爬措施,直接提交用户名和密码就能登录。甚至,我都不需要登录,因为是一次性拉去页面信息,我为了“敏捷开发”,甚至直接F12查了登陆以后的cookie,然后带着cookie发起请求。然后,幸运的是我们的内网业务系统,URL非常规范,我甚至可以根据检查人员给的单号直接拼出URL,访问也非常方便。最后,页面结构也非常规范,我可以使用浏览器自带的xpath功能,通过复制粘贴定位元素,模拟鼠标点击。整个工程没有任何难点,代码风格依旧保持乱写的状态:
甚至主要功能是网上抄的
不管写的怎么样,效果还是非常好的。特别是当我们把所有的pdf打包好了交给检察人员,他们又给了我们一个清单,还要再补充百八十个样本的时候,心情那个舒畅啊。
从此,我开始对网络感兴趣,意识到单机的python脚本能力实在有限。所以囫囵吞枣地大概的了解了一下TCPIP协议,了解了一下HTTP协议。本意是为了防止以后爬虫的时候出现百度都不知道怎么百度的情况,却意外的让我前进到第三个阶段。
第三阶段-建立服务:
其实随着写的爬虫和excel脚本越来越多,同事也会不断的问我要一些工具,让他们也可以用用。单怎么让他们使用其实蛮困扰的。bat的问题是需要在别人的机器上配置python环境,而且几乎不能交互。所以后来就想到了用pyinstaller打包。打包的问题也不少,文件大就不说了,毕竟整个python解释器都在里面,最大的问题是比较简单的UI库都太丑了。我当时主要写的是Tkinter,一股浓郁的win98风格。同事看到了第一反应就是,你这个老古董,不太敢用啊。
我就想那别人怎么搞,难道只能自娱自乐吗。
大佬们的答案都一样,起一个服务,用前端作为UI呀。这样完全不用考虑用户环境,而且只要一个浏览器就行了。
我一听,这个方案,非常优雅。
说干就干。我的需求就是要“敏捷开发”,毕竟我只有一个人,而且码代码也有不是我的本职工作,所以就选用了Flask架构,一行代码起一个服务。前端我不懂,就不考虑美观,css和js都几乎为0的情况下,做了一些堆砌控件的“前端”;后端数据库我也不懂,但是不要紧,我的业务数据量都非常小,可以用python的pickle作为永久层,查数据就用字典,非常方便。展现出来的效果大概是这样的,页面虽然依旧是几十年前的风格,但是同事发现可以通过浏览器访问,觉得非常高级:
使用了jinja模板,所以预览的时候有奇怪的变量
而项目文件夹有大量的pkl文件:
非常丑,但是别人看不见。
而因为集成的功能也越来越多,至少这次开始,注意到了代码的质量,比如分割功能块啊,函数出入口标注变量类型啥的,以免写道后面自己都忘记了:
随着挂载的功能数量越来越多,突然觉得既然已经做到这一步了,不如就好好的做成一个项目,于是就只能逼着自己去学一些JS,CSS之类的前端基础,还有后端的SQL和python-sqlalchemy这类的包。
第四阶段-内网服务&RPA:
既然气氛已经烘托到这里了,那就只能把整个项目好好的完善一下,首先是前端,通过网上抄一些js动画,还有做一些简单的“扁平化风格”的按钮:
后端也鸟枪换炮,不再使用pickle做永久层,而使用正经的mysql来储存,并且尝试使用sqlalchemy的ORM工具:
这样检查、修改都非常方便。
到这里为止,我自己部署的服务已经囊括了财务日常工作需要做的大部分内容,包括自动生成结账分录,推送到财务系统,打印流水、打印凭证及匹配银行回单等等等等,我每天的日常工作其实已经基本没有了。
回到最初的问题,其实如果以兴趣为导向,python真的是一个非常容易上手,功能又很强大的工具。Python能做什么,取决于你想要做什么,在数字的世界中,你只要投入足够的精力在某个工具上,一定会给你值得的回报。
与君共勉。
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
标签:非常,Python,干什么,可以,excel,学习,python,多人 From: https://blog.csdn.net/z099164/article/details/137080735