这是一本关于如何利用Python提高日常办公效率的书,书中凝聚了作者多年的实践经验和独特思考,旨在帮助读者准确、高效地完成大量高重复度的工作。本书汇集了日常办公和处理文档时常见的问题,通过实例的演示与讲解,帮助读者灵活有效地使用Python处理工作中遇到的问题。全书共11章,涵盖Python的各种应用场景,具体包括文件管理自动化,网络信息自动获取,TXT、XLS/XLSX、DOC/DOCX、PPT、PDF、图片文件的自动化处理,模拟鼠标、键盘操控本地软件,自动化运行管理等。本书力图淡化编程中的抽象概念,贴合工作场景,注重实战效果,通过对Python技术的巧妙讲解,帮助读者成为高效率的办公室“超人”。本书适合任何想要学习Python编程的读者,尤其适合缺乏编程经验的初学者。同时本书提供所有案例的源代码文件,方便读者边学边练,爱上Python编程。
在互联网信息技术革命的背景下,人类的生产和生活方式都在发生巨大的变革。“时间就是金钱,效率就是生命”,互联网时代的人们更加追求效率,通过自动化技术不断提升工作效率。随着大数据时代的来临,各行各业的数据量越来越大,新数据的产生频次在加快,数据的类型也在增多。我们要处理的各种数据和文案资料越来越多,工作量越来越大,工作负荷越来越繁重。以前,完成一个文案工作,可能最多处理十来个文件,现在可能要处理几十个甚至上百个资料文档,导致工作压力越来越大。传统的思维方式是针对每个具体问题找出相应的软件工具。汇总报表用Excel,写报告用Word……我们要安装太多的软件和插件,掌握太多的工具,熟记太多技巧。但是,软件的功能总是固定的,一旦写成就“僵化”了,而工作需求总是千变万化。我们要么被动等待软件更新,要么安装更多的软件。同时,不同的任务需要不同的软件完成,我们需要不断地在各种软件之间切换,这本身也是很烦琐的工作。面临处理海量资料的挑战,仅靠“熟练运用办公软件”已经难以应对,传统的工作方法需要改变。如何改变?如何应对大数据时代的挑战?解决办法就是学习编程,通过程序操控软件、组合工具、驾驭数据,来实现真正的批量化、自动化、定制化。编程就是给计算机下指令,让计算机自动完成复杂的工作,将我们从烦琐的重复性工作中解救出来。无论是IT从业人员,还是管理人员、财务人员、销售人员、自由职业者、学生……学习编程都将给自己赋能,有利于自身的职业发展。当然,编程本身就是个难题。很多人也尝试过学习编程,但总是半途而废。大部分人觉得这很难,他们认为程序员是数学家,需要艰苦地钻研各种高精尖的技术难题。结合笔者学习编程的经历来说,兴趣是最好的老师,我们往往把编程看得太神秘,过多地关注程序语言的语法和复杂的算法,而忘记了为什么学习编程。我们总是试图学完一门语言的全部语法,然后再用程序来解决实际问题。语法本身非常枯燥,而相关的案例又和实际工作毫不相干。尽管潜心研究很久,却对现实问题束手无策,编不出一个能用的小程序,最后只能放弃。其实,我们并不需要多么高深的编程技巧,更不需要系统地开发一个软件,有时候几行代码就能设计出功能足够强大的工作效率改善工具。当年笔者磕磕绊绊地用一段VBA代码完成了多个Excel表格的自动汇总,这件事给笔者带来极大震撼,也让笔者走上了编程之路。工作中,但凡有需要重复做3遍以上的文案工作,笔者都会考虑是否可以开发个小工具来完成。笔者在构思本书时,也曾犹豫过到底选用什么语言来写。这些年笔者用过很多语言,如VBA、C#、Java……其实殊途同归,每种效率工具都可以用不同的语言来实现,现在笔者开始固定用Python。在程序员的世界中有句话广为流传:“人生苦短,就用Python。”这句话非常形象地说出了Python语言在程序员心目中的地位。21世纪是人工智能的时代,Python被称为最接近人工智能的编程语言,所以,学好Python对日后的发展有一定的帮助。同时,Python已经被编入一些地区的小学教材,已经成为人人都要学的一项基本技能,这些趋势表明Python很有前景,同时入门也很简单。很多年前,当笔者开始应用Python时,书店还没有多少关于Python的图书。而如今,这方面的图书已经摆满了书架,但这些图书大多是枯燥的教程,还有一些是讲“高大上”的数据分析,鲜有介绍如何用Python来处理办公室的各种烦琐的工作的。无人驾驶的汽车已经上路,而很多办公室人员还在靠“复制+粘贴”完成各种报表、报告的汇总。这也促使笔者下决心写一本能够满足读者这方面需求的书。当然,要提高工作效率,仅仅会写代码是不够的。想成为一名优秀的流程优化大师,还需要有全方位、透彻理解问题本质的能力,善于把实际的烦琐任务拆解成准确的效率问题,并运用相关的知识来解决。本书尝试从这个角度出发,帮助读者认识烦琐任务的本质,引导读者从效率的角度来思考、拆解任务,并最终顺利地达成目标。
本书特色(1)浅显、通俗,零基础、入门级的讲解,特别适合初学者阅读。(2)内容实用,基于真实场景,以便高效地解决实际问题。(3)循序渐进,授人以渔,帮助读者提升自学能力。
本章介绍了各种提高工作效率的工具,以及它们的优点和缺点。本章还详细介绍了Python的安装、开发环境的配置、编程风格等,目的是让读者能尽快在自己的计算机上写出第一个Python程序。兴趣是最好的老师,亲手写出第一个程序,感受到编程的乐趣,就已经成功了一半。
Python已经是现代人不可或缺的工具。如果你熟悉下面的场景,你可以考虑学习Python。学习Python可以更好地解决问题,提升工作效率。
我们天天都在忙,究竟在忙些什么?查找各种文件,在一个个文件夹里来回穿梭。在TXT、XLS/XLSX、DOC/DOCX、PPT、PDF文档之间来回切换,复制、粘贴,运指如飞。打开几十个网页,以便及时获取信息。将各种数据输入系统,以及把数据填写到各种Excel表格中。各种办公系统、ERP软件的日常操作,不停地用鼠标点点点。这些场景构成了我们的工作日常。当然,有时候我们还会面对各种“变态”的工作任务,例如整理陈年档案,从几千份简历中提取参加应聘人员的信息,向系统输入上千条数据,用网页查询几千个手机号归属地,删除几百个Word文档中的关键词……说起来,我们真忙,还没练成“无影手”,就已经得了“鼠标手”“键盘手”和颈椎病。据媒体报道,都市白领普遍存在过度劳累现象。问题是,加班加点地“忙”,效率有提升吗?将我们日常的工作归纳一下,可以分为以下几大类。
据说,人的一生差不多有三分之一的时间要浪费在找东西上,除了有目的地找东西以外,还有很大一部分时间浪费在找不到的东西上。我们花了大量时间找资料,这里的资料包括本地资料和网络资源。本地资料是指计算机上的文件。我们在使用计算机时,会花大量的时间找文件。我们每天还消耗了大量时间上网查资料,但是效率也不高,不一定能找到有价值的资料。如果不花时间认识文件,那么就会花更多时间找文件。什么是文件?文件有哪些类别?文件的结构是怎么样的?不同的文件有什么特征?文件是如何存储的?我们需要抽点时间学习文件管理,同时再认识一下常用的几种文件。同样,我们天天上网,但是我们真的懂网络吗?例如,网页的结构、网络通信,一个简单的单击背后的数据传输原理等。磨刀不误砍柴工,懂网络以后,我们通过爬虫技术,能够千百倍地提升找资料的效率。有程序24小时为我们“盯”着网站,怎么会错过重要信息呢?随着互联网的高速发展,数据总量急剧增长。在大数据的时代,我们查找资料的方式也需要转变,对于有些工作,人脑得让位于计算机。例如,我们用搜索引擎搜索资料,可能有用的资料要在搜索结果的十几页、几十页、甚至几百页之后才会出现,如图1-1所示,那么仅靠肉眼一页一页地翻看,恐怕难以达到目的。
图1-1
工作中,我们经常浏览网页和各种论坛。一个网络热帖有时会有几百页,人工看完非常耗时间,如图1-2所示。通过爬虫技术,我们可以一次性获取各个分页的地址,然后在分页的源代码里面提取出文字信息,得到“脱水版干货”,大大节约了时间。时间是宝贵的,不应该浪费在找资料这种重复而乏味的事情上。
图1-2
大数据时代,大家都在谈数据分析、数据的可视化呈现和各种炫酷的图表制作技巧。在现实工作中,数据在哪里呢?数据并不是规整地放在数据库中,事实上,大量的数据封锁在一张张Excel表格里、在Word文档里、在PDF文档里,甚至在扫描的图片里,还有的数据封闭在企业内网的各种专用数据终端里。我们日常要做的工作就是数据提取和清洗,这是很基础但也很重要的工作。例如,金融行业离不开企业分析,然而企业年报披露材料中有很多是PDF扫描件,其中的文字无法复制,财务表格千差万别,数据难以提取。股权结构、股东结构隐藏在图片中,也难以提取。数据提不出来,自然无法进行统计、汇总和比较。所以,我们看到在投资银行里,大量的新员工前几年的工作都是“摘数据”,即从各种PDF版本或者纸质文件的企业年报中,手动地把财务数假设我们需要对全国的银行做一个深度分析,那么就需要获取所有银行的信息披露报告。对于非上市银行来说,其信息披露报告散见于各地市级的报纸。我们通过全国报刊数据库可以下载报纸电子版,很多电子版报纸都是PDF格式或者图片格式,如图1-3所示。因此提取和清洗数据问题的难点就在于解析PDF和图片,提取文字和表格中的数字。
图1-3
工作中我们总是有太多的表要填,这一点相信大家都深有体会。“上面千条线,下面一根针。”工作要留痕,台账少不了,还得有图片。工作做完不算完,还有很多报表要填。每个人身上都背负了几十张报表,如日报、周报、月报、季报等。
实际工作中要填写一堆表格,而很多表格上面的信息都是重复的。一方面,我们期望报表少一点;另一方面,我们也要适应管理部门的要求。管理越来越精细,数据搜集越来越频繁,自然报表就会越来越多。从技术角度来说,填表就是数据的搬运。各个部门都有自己的报表格式和样式,同样的数据要装入不同的报表。这种工作最适合用程序来自动完成。如果将这几十张报表的钩稽关系、交叉引用关系理清楚,则只需要一张基础信息表,其他报表都可以通过引用来自动生成。自动化填表既保证了效率,又确保了数据的一致性,而手动填表误差在所难免,经常出现“数据打架”的问题。有时还需要把Excel表格中的数据填到各种企业内网系统里,这需要大量的键盘录入工作。我们改变不了系统设计,因此只能优化工作方式。建立数据和键盘按键之间的联系,让键盘自动录入数据,这些问题自然就可以解决。
在各种报告、方案和文件的制作上花费了过多时间,可能是导致工作进展缓慢的重要原因。我们经常写报告,这些报告有各种模板,每期更新一下。每次写都要花很多时间将数据从Excel表格中查出来,填在Word文档里面。这些常规性的报告,占据了工作人员绝大多数的时间。还有就是各种方案的反复修改,也非常消耗时间。首先是部门内部的沟通,很多时候,领导安排写方案时也不能特别清楚地表达需要什么样的效果。只有在看完初稿以后,才提出设计的方向。有时候,领导的想法会反复变化,方案也需要不断调整。花了很多时间,方案终于在部门内部定稿。然后是部门之间的协调,征求各部门意见后再进行方案修改。最后,要在公司层面的会议上讨论方案,随之而来的就是庞杂的会议材料制作。如果公司高层提出了意见,那么方案又要修改,又要制作庞杂的会议材料,等待再次上会讨论。如果文书制作耗时很长,那么再次上会讨论的时间就会拖得很久,当然工作也就无法继续推进。等到讨论时,大家可能已经忘记了上次会议的内容,以及当时为何要提出修改。这仅仅是内容层面的修改,有时候还会涉及格式的修改。越是大型的企业,越是强调格式的标准化。对于总部或部门的管理人员来说,文案的格式、字体等是否标准也许比内容还重要。
除了Word报告,还有PPT制作。说到做PPTÿ