“学习编码”是 21 世纪的新口号。但这句话常常忽略了编程的真正用途,尤其当你不打算转行成为软件工程师时。仅仅因为我们被电脑包围,并不意味着普通人需要能够重新编程他们的智能冰箱。
但是编程技能可以帮助解决不常见的、用户特定的问题。办公室职员、学生、管理人员以及任何使用电脑的人都遇到过繁琐的任务。也许他们需要重命名几百个文件。也许他们需要在特定网站更新时发送通知。或者他们可能需要将 Excel 电子表格中的几百行复制到网页表单中。
这些问题对于商业软件来说太具体而无法解决,但通过一些编程知识,用户可以创建自己的解决方案。学习编码可以将用户变成高级用户。
处理文件
例如,假设你有一个文件夹,里面有数百个文件。每个文件的名称都类似于 Apr2015.csv、Mar2015.csv、Feb2015.csv 等,一直追溯到 1980 年。你必须按年份对这些文件进行排序。但是你可用的自动排序不起作用;你无法按字母顺序对它们进行排序。你可以重命名每个文件,使年份排在第一位,并将所有月份替换为数字,这样自动排序就可以工作,但是重命名数百个文件会让人感到极其无聊,而且也会花费数小时。
这是一个 Python 程序,我花了大约 15 分钟编写,它可以代替完成这项工作
import os, shutil monthMapping = {'Jan': '1', 'Feb': '2', 'Mar': '3', 'Apr': '4', 'May': '5', 'Jun': '6', 'Jul': '7', 'Aug': '8', 'Sep': '9', 'Oct': '10', 'Nov': '11', 'Dec': '12'} for filename in os.listdir(): monthPart = filename[:3] yearPart = filename[3:7] newFilename = yearPart + '_' + monthMapping[monthPart] + '.csv' print('Renaming ' + filename + ' to ' + newFilename) #shutil.move(filename, newFilename)
Python 是初学者的理想语言,因为它语法简单。它不是一系列神秘的 1 和 0;你无需任何编程经验即可理解。让我们逐步了解这个程序。
首先,Python 的 os
和 shutil
模块具有可以完成我们需要的 文件系统工作的函数。我们不必自己编写代码,只需在第一行导入这些模块即可。接下来,一个名为 monthMapping
的变量包含一个字典,该字典将月份缩写映射到月份数字。如果 'Apr' 是月份缩写,monthMapping['Apr']
将为我们提供月份数字。
for 循环在当前目录或文件夹中的每个文件上运行代码。os.listdir()
函数返回文件列表。
文件名的前三个字母将存储在名为 monthPart
的变量中。这只是使代码更具可读性。类似地,文件名中的年份存储在名为 yearPart
的变量中。
newFilename
变量将由 yearPart
、下划线、月份数字(从 monthMapping[monthPart]
返回)和 .csv 文件扩展名创建。在程序运行时在屏幕上显示输出很有帮助,因此下一行打印新文件名。
最后一行调用 shutil
模块的 move() 函数。通常,此函数将文件移动到具有不同名称的不同文件夹,但通过使用相同的文件夹,它只是重命名每个文件。行首的 # 表示整行是 Python 忽略的注释。这使你可以运行程序而无需重命名文件,以便你可以检查打印的输出看起来是否正确。当你准备好实际重命名文件时,你可以删除 # 并再次运行程序。
计算机时间很便宜/软件开发人员时间很昂贵
这个程序不到一秒钟即可重命名数百个文件。但是,即使你必须处理千兆字节的数据,你也不需要能够编写“优雅”的代码。如果你的代码运行需要 10 个小时而不是 2 个小时,因为你不是算法专家,那仍然比找到软件开发人员,向他们解释你的需求,协商合同,然后验证他们的工作要快得多。而且肯定比手工处理所有这些数据要快。简而言之,不要担心程序的效率:计算机处理时间很便宜;昂贵的是开发人员的时间。
更多 Python 内容
我的新书《用 Python 自动化无聊的东西》,由 No Starch Press 出版,以 Creative Commons 许可发布,教初学者程序员如何编写 Python 代码来处理无聊的任务。它跳过了抽象的计算机科学方法,专注于实际应用。你可以在线阅读完整的书籍。电子书和印刷版可从 Amazon、nostarch.com 和书店购买。
许多编程教程都使用诸如计算斐波那契数或解决“8 皇后”国际象棋问题之类的示例。用 Python 自动化无聊的东西 教你编写代码来解决现实世界中的问题。本书的第一部分是通用的 Python 教程。本书的第二部分涵盖了诸如读取 PDF、Word、Excel 和 CSV 文件之类的内容。你将学习如何从网站上抓取数据。你将能够按照计划启动程序,并通过电子邮件或短信发送自动通知。如果你需要从繁琐的点击和输入中解脱出来,你将学习如何编写程序来为你控制键盘和鼠标。
2 条评论