点击上方蓝色文字关注我们吧
六月以来同学们提的最多问题之一,就是 “《全民一起玩Python实战篇 之 办公自动化》什么时候开始连载”?为此,杨老师一方面加紧时间备课录像,另一方面也安排团队调研业界同行,搜集先进的催更投诉管理经验。
功夫不负有心人,很快,团队助理就发来了最新参考:
(图片来源:腾讯新闻)
甩甩胳膊转转肩,一通热身之后, 杨老师觉得还是心无旁贷、按既定计划专心录课为上。
(图片来源:百度百科)
其实这段时间我们一直都在制作《办公自动化》课程。之所以一直没有发布大纲,是因为我在课程的广度和深度上犹豫了很久。
广度方面,我认为办公自动化的核心问题应该包括文件读写、数据处理、格式编辑,以及流程控制四类操作。举一个典型的例子:提取文件夹中所有PDF格式的发票,将关键信息统一制表并汇总,然后通过电子邮件发送给财务人员。在这个业务的各个环节大体如下,四种操作相辅相成:
深度方面,虽然办公自动化领域已经有各种成熟的第三方模块,简单调库就能解决大多数问题;但是每讲到一个模块,我还是忍不住想引导同学探索一下背后的原理,否则总觉得自己在敷衍大家。从教二十年来,我一直抵触“重结果轻过程、重套路轻思想”的教学模式,坚持认为教师的价值,就在于剖析原理、启发思维。
然而办公自动化毕竟是一个面向实操的课程,而且涉及的内容又非常广泛。所以这段时间我一直在调整各个模块之间的比重以及“原理”与“操作”之间的平衡,以致开头部分的内容反复重录,章节顺序也在不断修改。直到多次讨论、并录制了部分章节后,本周我们才确定这门课程的整体结构:
01
文件系统
无论PDF、Word、Excel还是图片、视频,归根到底都是一个个的文件,所以不了解文件的本质和文件操作,学习办公自动化就是“浮沙筑高台”。因此我们把文件系统作为这门课程最先讲解的基础模块,主要内容包括:
(1)理解文件的本质,从二进制角度感受文本、Office、图片、压缩文件等各种文件的相通之处与差异根源,进而理解“文件类型”的本质含义。
(2)在(1)的基础上,我们可以进一步研究:为什么那些第三方模块可以读取Excel?届时我们会演示几个小程序,无需任何第三方库,只使用几行Python代码就能读取Excel件。在我看来,这种“直接剖析文件格式并编程搞定”的能力,是将来从“调库侠”晋升为高级OA用户的重要内功。
(3)理解文件本质后,我们把目光转到文件操作上来,包括怎样让程序正确定位到数据文件、怎样在文件夹(以及子文件夹)中找出所有符合要求的文件、怎样自动执行文件或文件夹的 复制/粘贴/更名/删除/压缩 等常用操作。显然,这些都是实现“批量处理文件”的必备技能,而我们将要介绍的 pathlib、shutil 等标准模块,用起来也会比网上很多资料中介绍的 os、glob 等传统方法方便许多。
02
PDF自动化
考虑到《基础篇》、《提高篇》中多次讲到 Excel 和 Word 的基本读写方法,这次《实战篇 办公自动化》课程里,我们把 PDF 提到 Office 之前讲解,主要内容包括:
(1)PDF文件本质:对于很多人来说,PDF都是一个介于图片与Word文档之间的很“奇怪”的文件格式;而从办公自动化的角度看,PDF处理起来也确实比较“别扭”,无论使用哪种第三方模块,总会出现无法正确解读某个文件的情况。所以在讲解第三方库之前,杨老师带大家亲手剖析一个简单PDF文件、感受PDF的基本结构,从而在遇到各种问题时能够心中有数。
03
MS Office自动化
毫无疑问,Word、Excel和PPT等MS-Office工具是办公自动化的主要对象,而我们也在《基础篇》和《提高篇》中,多次讲过怎样使用 xlwings 和 pydocx 读写 Excel 与 Word文件。特别是在《实战篇 数据分析》的“Pandas专题”中,我们用十几节课的时间详细演示了怎样使用 Pandas 这个数据分析神器对Excel中的数据进行快速处理,相信学习过《数据分析》课程的同学一定印象深刻。
所以在《办公自动化》中,我们会把讲解重点放在“批量读写Office文件”、“自动修改Office文件的格式样式”、“自动执行打印、运行宏等操作”、“事件响应与窗体编程” 以及“Excel <-> Word <-> PPT 互相调用” 五个方面。具体安排如下:
(1)Word:Word文件结构;使用第三方库批量处理Word文件;用正则式定位并读写Word文本;字体/标题/样式/分页/插图/水印 等常用格式处理;Word表格提取与处理;自动打印与PDF转换操作。
(2)Excel:数据处理的本质与常见思路;单元格/行/列/图表/合并单元格等常用格式处理;自动打印;自定义公式、事件响应与窗体设计;Python-VBA协同调用;Excel与数据库的对接。
(3)PowerPoint:PowerPoint对象结构与常用第三方库;Slide格式自动创建与修改;批注与图表处理;自动打印。
(4)PDF<-> Word <-> Excel <-> PPT 自动对接。
特别地,由于目前Python免费社区中,各种Office模块都存在一些局限,所以上面列出的很多任务需要使用 wincom32 组件实现。因此在这部分课程中,我们还会讲解 wincom32 的原理和用法,以期帮助同学解锁全部技能。
04
多媒体处理
随着手机照相和视频监控的大量普及,图像文件/视频文件/录音文件 早已成为办公电脑里的常客。所以仔细考虑后,我们把原计划单独成课的多媒体处理,降低难度后列入这次的《办公自动化》课程,加量不加价。在这个部分里,我们解决的主要问题包括:
(1)理解图像处理的基本概念,比如常见图片格式、灰度、矢量等。
(2)使用Python自动对图片文件进行裁剪、缩放、旋转等变换操作,以及灰度化、二值化和基本色彩处理。
(3)相似图片匹配、人脸识别、OCR识别的原理、基本算法与示例。
(4)视频处理的原理,以及“自动截图与识别”等基本视频处理案例。
(5)音频处理的基本原理与MP3音频文件的标签处理。
05
工作流程自动化
如前所述,除了文件、数据与格式外,自动化办公的另一个重要方面就是将各种重复的“点击鼠标”流程,用Python自动复现。比如选择文件并发送电子邮件给客户、从Excel中复制数据并录入浏览器中的ERP窗体、自动记录微信消息等。所以在这一部分中,我们会重点讲解以下内容:
(1)使用 autogui 等多种模块并配合图像处理技能,自动识读屏幕并控制键盘鼠标操作。理论上讲,这种方法可以模拟人类一切电脑操作,而我们不仅会使用模拟办公案例、还会以“游戏外挂”为例讲解这些技巧。
(2)使用 selenium 等自动化测试工具,实现浏览器模拟操作,以便填写相对复杂的B/S模式系统。
(3)电子邮件原理与协议和常用第三方模块,配合文件技能与Office技能,实现电子邮件的自动创建与分发。
(4)微信等即时通讯软件的自动化操作。不过由于最近几年腾讯公司加强了对微信web端的限制,所以已经很难找到第三方库自动收发人微信。因此这一部分里,我们会在不违反腾讯政策的前提下,研究几种替代性的思路。
06
定时计划任务
所谓“计划任务”,就是让电脑能够在指定的时间自动启动某个程序、完成某个操作,比如每天9:30点钟准时发送签到邮件、每2小时内随机选择时间给女友发送微信等等。
显然,这个功能格外符合Python的口号——“人生苦短”,对于已经习惯在家摸鱼工作的朋友更是贴心,所以 Python社区中涌现出了很多专门的第三方模块。不过在介绍这些模块的同时,杨老师希望借此为大家讲解两个重要的技术概念 —— 多进程与多线程。如果理解了多进程与多线程技术,那么我们不仅能够实现计划任务,而且还能把它用到“并发网络爬虫”、“多核并发运算提速”等场景中,进一步提升编程能力。
以上就是我们《Python实战篇 办公自动化》课程的主要内容,目前规划9月底开始连载,估计需要至少70集课程讲完。为了节省篇幅,其中部分与已有课程重复的内容(比如《实战篇 数据分析》讲过的Pandas处理Excel数据)我们就不再重复录制,希望各位理解。
此外对于本课程中绝大部分章节,同学们只需要具备《基础篇》的知识、以及《提高篇》中截止正则表达式的知识就可以理解。不过某些案例里我们会用到《提高篇》函数式编程与面向对象的知识,所以希望大家最好对《提高篇》有一个完整的印象。
录课不易,感谢大家的长期支持!