可以用代码自动化的 6 个耗时任务

还没有读者喜欢这个。
How has open source changed your life?

Opensource.com

识字曾经是文士和牧师的领域。后来世界变得更加复杂,要求每个人都能读写。计算机也是一种识字形式,但在我们这个复杂的在线世界中,仅由程序员祭司阶层理解是不够的。“学习编码”已成为各个年龄段教育的口头禅。但是在消除炒作之后,人们为什么需要学习编码?它到底能给我们带来什么?

并非每个人都需要成为软件工程师,但几乎每个办公室工作人员都将笔记本电脑作为日常工具。计算机之所以能极大地提高生产力,是因为它们支持为这些工作人员设计的大量程序和应用程序市场。但是商业和开源软件都存在“最后一英里”问题:它们无法自动化所有可以想象的任务。仍然有一些计算杂务需要大量重复(且相当无脑)的打字和点击。即使您有一个实习生来处理这些任务,这些任务也需要人来完成,因为没有软件可以自动化它。这些任务规模太小或太特定于您组织的流程,以至于软件公司创建定制解决方案在经济上不划算。

这就是日常编程可以发挥作用的地方。一点编码知识可以让任何人编写小型脚本来完成这些任务,并节省他们数小时(或数周或数月)的努力。虽然 Excel 具有可编程宏,Outlook 具有可配置的电子邮件规则,但在像 Python 这样的真正的编程语言中进行编码要灵活和强大得多。尽管编程因其类似于“火箭手术”而闻名,但编程只是一项像驾驶汽车一样的技能。您可能在参加驾照考试时感到紧张,但此后不久,操作机动车就成为现代生活的例行部分。

我的最新著作《用 Python 自动化无聊的东西》跳过了计算机科学,只教授了足够的 Python 编程知识,即可达到实用的技能水平。每个人都掌握这些技能非常重要,因此我根据 知识共享 许可在 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 上的此对话

User profile image.
Al Sweigart 是一位软件开发人员和技术图书作者,居住在旧金山。他撰写了几本 Python 书籍,这些书籍根据知识共享许可在 https://inventwithpython.com 上提供。

6 条评论

很棒的文章。

从这些小型编码项目开始是使工作更轻松的好方法。这也符合 Linux 哲学原则“自动化一切”。

您说的完全正确。但是看看你周围,有多少人几天后仍然记得你向他们展示的小技巧?有多少工人只是将计算机视为另一台咖啡机?有多少秘书不知道如何使用文字处理器?现在为大众编码?恕我直言,编码仍然是精英祭司的特权。

没错。对大多数人来说,计算机只是另一种电器。但是,我个人认为,即使只有一个人瞥见了幕后的真正力量,也是值得的。

回复 作者 SET (未验证)

假设我提高了生产力——然后呢?会分配更多的工作,但不会增加工资,而且很可能我的一个同事会被裁员。

这真的让我笑了。谢谢!

不幸的是,在许多工作场所都是真实的陈述。工作效率更高的人通常会获得更高的工作量来补偿。希望更多的组织采用基于绩效的加薪。

回复 作者 George McDuffee (未验证)

至于因为自动化了一些工作而获得更多工作;不要告诉任何人您自动化了工作。但是要有关于如何完成它的文档,这样如果您找到更好的工作,就可以将其交给某人。如果这项工作应该花费一个小时,但您的脚本花费 5 分钟......听起来您有空闲时间,大约 55 分钟。

当您的乏味工作自动化时,只需继续“工作”即可。没有人需要知道您工作更聪明。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.