假如这样的步骤全部手动做下来耗时是6秒,在文件数量不多的情况下,比如10个文件,总共耗时一分钟其实是能够接受的。
但当文件数量特别多时,或者这个操作特别频繁每天都要做十几二十次时,手动操作就会变得耗时又繁琐,这时使用Python来解决优势就比较明显了:
1. 代码编写是一次性投入2. 不论多少文件都只需要运行一次程序
3. 大量的文件执行也很快
4. 程序一直后台运行便可以自动处理
Firstpart:获取待分类文件列表,循环遍历
了解基础知识
在开始动手解决问题之前,我们需要先学习一下与文件相关的基本概念。
现在我们常用的计算机系统分为Windows系统和macOS系统。
路径(Path) 用来表示文件或文件夹的位置。
当我们需要访问文件或文件夹时,路径就像现实中的地址一样,帮助我们找到目标文件或文件夹在什么位置。在Windows系统的路径中,我们使用反斜线“\”分隔各个文件夹和文件名。
同时,在路径的最前面,是盘符的字母和一个英文冒号,表示文件或文件夹具体是在哪个盘的路径下。
而在macOS系统中,文件夹和文件名使用正斜线”\”进行分隔。
需要注意的是,macOS系统中,没有盘符的概念,所有的路径都是从根目录( / ) 开始。
不管是何系统,除了文件路径有所差异,其它的知识点和操作步骤都是通用的。
学习了路径相关的知识之后,让我们回到阿文要解决的问题:文件自动化分类。 |
代码展示
# 使用import导入os模块 | import os |
阿文把需要处理的文件下载下来,将文件保存到了路径: /Users/yequ/Downloads
如图所示:文件夹 Downloads 中有很多文件,例如:PDF、Word、Excel、图片、视频等等。
我们要获得 Downloads 文件夹中的文件名才能进行分类,接下来,学习获取文件夹所有文件名称的方法。
代码展示
阿文将文件保存到路径 /Users/yequ/Downloads,我们需要获取该文件夹下所有的文件列表。 |
# 使用import导入os模块 import os # 将文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath downloadPath = "/Users/yequ/Downloads" # 使用print输出downloadPath以检查赋值结果 print(downloadPath) |
获取文件名(代码展示与解释) |
接下来,将路径作为参数传入 os.listdir() 函数,就可以获得一个列表。并输出列表,查看 Downloads 中的所有文件或文件夹的名称。 # 使用import导入os模块 import os # 文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath downloadPath = "/Users/yequ/Downloads" # 使用os.listdir()函数获取该路径下所有的文件或文件夹名称 allItems = os.listdir(downloadPath) # 使用print函数输出变量allItems以确认列表内容 print(allItems) |
1.获取所有文件的名称,需要使用 os 调用 listdir()函数。 |
2. os.listdir() 函数中要求传入参数文件夹路径。 |
3 . 使用 os.listdir() 函数获取文件名后,返回一个列表,列表中的每个元素是图片文件夹中的文件。 |
代码结果 查看输出结果,使用 os.listdir() 函数,会获得所有文件组成的列表,列表的每项都是一个文件。 |
使用for循环遍历所有文件(夹),并在循环内使用print
输出文件(夹)名
得到了所有的文件(夹)名称后,我们需要取出每个文件用于判断类型。使用for循环遍历列表中所有文件(夹)的名称,并输出,以便稍后去逐个判断。 |
# 使用import导入os模块 import os # 文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath downloadPath = "/Users/yequ/Downloads" # 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems allItems = os.listdir(downloadPath) # 使用for循环遍历所有文件(夹) for item in allItems: # 使用print输出文件(夹)名称 print(item) |
接下来,我们要按照文件后缀名对文件进行分类。
这一部分内容明天讲解,欢迎大家指出不足