识字曾经是文士和牧师的专属领域。后来世界变得更加复杂,要求每个人都读写。计算也是一种识字形式,但仅由程序员祭司理解它对于我们复杂的在线世界来说是不够的。“学习编码”已成为所有年龄段教育的口头禅。但是在消除炒作之后,人们为什么需要学习编码?它究竟能给我们带来什么?
并非每个人都需要成为软件工程师,但是几乎每个办公室工作人员都将笔记本电脑作为日常工具使用。计算机之所以能极大地提高生产力,是因为它们支持为这些工作人员设计的大量程序和应用程序市场。但是商业和开源软件都存在“最后一英里”问题:它们无法自动化所有可以想象的任务。仍然存在需要大量重复(且相当无脑)的打字和单击的计算杂务。即使您有实习生来承担这些任务,这些任务也需要人工完成,因为没有软件可以自动化它。这些任务对于软件公司来说规模太小或对于您组织的workflow来说太具体,以至于无法经济地创建自定义解决方案。
这就是日常编程可以发挥作用的地方。一点编码知识可以让任何人编写小型脚本来完成这些任务,并节省他们数小时(或数周或数月)的精力。虽然 Excel 具有可编程宏,而 Outlook 具有可配置的电子邮件规则,但是在像 Python 这样的真正编程语言中进行编码具有更强的适应性和更强大的功能。尽管编程因类似于“火箭手术”而闻名,但编程只是一种像驾驶汽车一样的技能。您在参加驾照考试时可能会感到紧张,但是此后不久,操作机动车就成为了现代生活的例行部分。
我的最新著作《Automate the Boring Stuff with Python》跳过了计算机科学,仅教授了足够的 Python 编程知识,以达到实用的技能水平。每个人都掌握这些技能非常重要,因此我已根据 Creative Commons 许可在 AutomatetheBoringStuff.com 上免费在线提供该书,此外还通过 No Starch Press 出版了印刷版。本书的第一部分是针对初学者的流行 Python 语言的通用编程教程。第二部分介绍了可用于 Python 的模块,这些模块有助于自动化任务。
但是人们将要编写的这些任务是什么?我发现它们通常分为六类:
1. 收集数据,格式化数据
正则表达式(第 7 章)允许您对计算机进行编程以执行文本模式匹配。您一直都在自己进行模式匹配:文本模式是您如何判断 415-555-1234 是电话号码,而 4,155,551,234 不是。如果您知道要查找的数据的一般模式,则您的笔记本电脑可以比您滚动浏览文档更快地收集所需的精确信息。
假设您有一个包含过去五年每月销售数据的大型 PDF。或者,也许您有 60 个单独的 Excel 文件形式的数据。或者它位于一个网站上,跨越多个页面,要求您在浏览完每个页面后单击“下一步”链接。我们需要的数据通常格式不方便。
Python 有几个模块可以从 PDF、Excel 电子表格、Word 文档、网站、CSV 文件和其他格式读取数据。从数千个文件中读取数据对您的笔记本电脑来说不成问题。一旦您的程序加载了此信息,它就可以以您的组织需要的任何格式输出它。这肯定比手动复制和粘贴文本要好。
2. 批量指令
您可能已经学到了一些键盘快捷键:按 Ctrl+A、Ctrl+C 比将鼠标移动到菜单并单击“编辑”、“全选”,然后“编辑”、“复制”要快得多。想象一下,如果您可以创建自己的快捷方式。编写一个可以启动其他程序或执行现有命令的程序(第 15 章)可以让您将几个步骤变成一个步骤。您可以编写程序来控制键盘和鼠标(第 18 章),自动填写表格等等。这是一种可以长期节省您大量精力的技巧,尤其对于您经常执行的命令。
3. 批量文件操作
将文件复制到闪存驱动器很简单。但是某些文件操作并非那么简单。如果您只需要复制修改时间戳在最近一周内的文件怎么办?或者,如果您需要重命名数百个文件以在其名称中添加前缀,基于它们所在的文件夹?并且您需要对分布在几个不同文件夹中的文件执行这些操作?编写一个程序来根据您的特定条件复制、移动、重命名、删除或压缩(第 9 章)可以为您快速而准确地完成此类文件整理。
4. 自动检查
检查错别字是一项常见的任务,因此在软件中经常可以找到它。但是,检查对您或您组织的需求特定的问题又如何呢?假设同事每天通过电子邮件向您发送带有电话号码的电子表格,而您需要知道其中是否有任何号码缺少区号。或者您有 PDF 报告有时缺少数字。自己用眼睛检查既乏味又容易出错。您可以编写脚本来检查缺少的数据或不符合有效文本模式的数据(第 7 章),从而将自己从这些杂务中解放出来。
5. 通知
也许您有过反复单击浏览器中的“刷新”的经历,等待网页更新您需要的信息或您想要注册的服务。这是一种排队等待的任务,计算机可以为您检查,并在准备就绪时向您发送电子邮件或 SMS 文本通知(第 16 章)。一个长时间运行的程序可以每天、每小时甚至每隔几秒钟读取网页(第 11 章)或其他来源(第 15 章)。无论您是否正在使用笔记本电脑,它都可以检查更新。这样,您甚至不必在笔记本电脑前就能收到通知。您的程序可以通过短信通知您的智能手机。
6. 报告
编译报告是一项繁琐的工作,但是收集和格式化信息可以自动化(在第一类中描述)。您的报告生成程序可以每天或每周一次(第 15 章)触发定期报告,并且您的代码可以将这些报告通过电子邮件发送给需要它们的人(第 16 章)。您为编写前几类程序而学到的所有技能都可以用于完全自动化地向同事和经理发送定期报告。
如果他们学会了编程,您的同事和经理可以编写代码来自动读取报告以获取任何可操作的信息。
您的笔记本电脑是一个强大的工具,您可能已经在您的职业或个人生活中使用了多年。您不必仅限于使用其他人创建并出售给您的软件。通过学习编程,您可以最大限度地提高其生产潜力以及您自己的潜力。
要阅读人们为激发您自己的想象力而自动化的任务示例,请查看 Reddit 上的此对话。
6 条评论