python文件自动化(4)

接上节课内容,在开始正式移动文件到目标文件夹之前,我们需要再思考一个问题。
在代码运行之前,阿文的下载文件夹里已经存在一些分类文件夹了,比如图例中"PDF文件"这个文件夹就是已经存在的。
这样的话,在程序运行时,按目前的逻辑,计算机就会把这个文件夹分类为其他文件,因为这个文件夹没有后缀名。

因此,每运行一遍代码,之前已经创建的文件夹都会被移动到"其他文件"这个文件夹下。
为了避免将文件夹移动到其他文件中,我们需要先判断该文件是否是文件夹,不是文件夹再移动。

修改代码

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 使用os.path.join()函数拼接文件路径,并赋值给变量itemPath。 |
| 我们先使用 os.path.join() 函数拼接出文件目前所在路径,也就是使用下载文件夹的路径和文件名进行合并。图例中我们先将合并后的文件路径赋值给变量 itemPath ,然后使用print输出itemPath。 |
| # 使用import导入os模块 import os # 将阿文的下载文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath downloadPath = "/Users/yequ/Downloads" # 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems allItems = os.listdir(downloadPath) # 使用for循环遍历所有文件(夹) for item in allItems: # 获取文件后缀名 extension = os.path.splitext(item)[1].lower() # 定义一个变量targetPath,用来表示准备移动到的文件夹路径 targetPath = "" if extension in [".jpg", ".jpeg", ".gif", ".png", ".bmp"]: # 使用os.path.join()函数拼接分类文件夹路径:图片文件 targetPath = os.path.join(downloadPath, " 图片文件") elif extension in [".avi", ".mp4", ".wmv", ".mov", ".flv"]: # 使用os.path.join()函数拼接分类文件夹路径:视频文件 targetPath = os.path.join(downloadPath, " 视频文件") elif extension in [".wav", ".mp3", ".mid", ".ape", ".flac"]: # 使用os.path.join()函数拼接分类文件夹路径:音频文件 targetPath = os.path.join(downloadPath, " 音频文件") elif extension in [".pdf"]: # 使用os.path.join()函数拼接分类文件夹路径:PDF文件 targetPath = os.path.join(downloadPath, "PDF 文件") elif extension in [".docx", ".doc"]: # 使用os.path.join()函数拼接分类文件夹路径:Word文件 targetPath = os.path.join(downloadPath, "Word 文件") elif extension in [".xlsx", ".xls"]: # 使用os.path.join()函数拼接分类文件夹路径:Excel文件 targetPath = os.path.join(downloadPath, "Excel 文件") elif extension in [".pptx", ".ppt"]: # 使用os.path.join()函数拼接分类文件夹路径:PPT文件 targetPath = os.path.join(downloadPath, "PPT 文件") else: # 使用os.path.join()函数拼接分类文件夹路径:其他文件 targetPath = os.path.join(downloadPath, " 其他文件") # 如果目标文件夹不存在,使用os.mkdir()函数创建文件夹 if not os.path.exists(targetPath): os.mkdir(targetPath) # 使用os.path.join函数拼接文件路径,并赋值给变量itemPath itemPath = os.path.join(downloadPath, item) # 使用print()输出文件路径 print(itemPath) |
| |

判断路径是否是文件夹

|----------------------------------------------------------------------------|
| |
| 我们将要进行判断的文件路径传入到 os.path.isdir() 函数中,如果该路径是文件夹就会返回True,如果不是就返回False。 |
| |

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 判断当itemPath路径是一个文件夹时,输出变量itemPath。 |
| 将文件路径传入 os.path.isdir() 函数中,由于该函数返回的是布尔数。 我们可以使用 if 语句进行判断,当结果是 True 时,也就是该路径是一个文件夹时,使用print输出itemPath。 |
| # 使用import导入os模块 import os # 将阿文的下载文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath downloadPath = "/Users/yequ/Downloads" # 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems allItems = os.listdir(downloadPath) # 使用for循环遍历所有文件(夹) for item in allItems: # 获取文件后缀名 extension = os.path.splitext(item)[1].lower() # 定义一个变量targetPath,用来表示准备移动到的文件夹路径 targetPath = "" if extension in [".jpg", ".jpeg", ".gif", ".png", ".bmp"]: # 使用os.path.join()函数拼接分类文件夹路径:图片文件 targetPath = os.path.join(downloadPath, " 图片文件") elif extension in [".avi", ".mp4", ".wmv", ".mov", ".flv"]: # 使用os.path.join()函数拼接分类文件夹路径:视频文件 targetPath = os.path.join(downloadPath, " 视频文件") elif extension in [".wav", ".mp3", ".mid", ".ape", ".flac"]: # 使用os.path.join()函数拼接分类文件夹路径:音频文件 targetPath = os.path.join(downloadPath, " 音频文件") elif extension in [".pdf"]: # 使用os.path.join()函数拼接分类文件夹路径:PDF文件 targetPath = os.path.join(downloadPath, "PDF 文件") elif extension in [".docx", ".doc"]: # 使用os.path.join()函数拼接分类文件夹路径:Word文件 targetPath = os.path.join(downloadPath, "Word 文件") elif extension in [".xlsx", ".xls"]: # 使用os.path.join()函数拼接分类文件夹路径:Excel文件 targetPath = os.path.join(downloadPath, "Excel 文件") elif extension in [".pptx", ".ppt"]: # 使用os.path.join()函数拼接分类文件夹路径:PPT文件 targetPath = os.path.join(downloadPath, "PPT 文件") else: # 使用os.path.join()函数拼接分类文件夹路径:其他文件 targetPath = os.path.join(downloadPath, " 其他文件") # 如果目标文件夹不存在,使用os.mkdir()函数创建文件夹 if not os.path.exists(targetPath): os.mkdir(targetPath) # 使用os.path.join函数拼接文件路径,并赋值给变量itemPath itemPath = os.path.join(downloadPath, item) # 使用if判断itemPath路径是一个文件夹时 if os.path.isdir(itemPath): # 使用print()输出itemPath print(itemPath) |
| |

移动文件夹

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 要想移动文件,我们需要导入Python中另一个内置的模块 shutil ,然后使用 shutil.move() 函数来对文件进行移动。 shutil.move() 函数可以用来移动文件或文件夹。它接收两个参数,第一个参数是要移动的文件(夹)路径,第二个参数是目标文件(夹)的路径。 |
| |
| 代码修改 |
| 导入shutil模块。 判断当itemPath不是文件夹时,使用shutil.move()函数移动itemPath路径的文件到targetPath路径的文件夹。 |
| 阿文的需求,是把分好类的文件移动到对应的文件夹里。 所以我们只需在程序判断 itemPath 不是一个文件夹的时候,使用 shutil.move() 函数将itemPath路径的文件移动到targetPath路径的文件夹下。 |
| # 使用import导入os模块 import os # 使用import导入shutil模块 import shutil # 将阿文的下载文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath downloadPath = "/Users/yequ/Downloads" # 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems allItems = os.listdir(downloadPath) # 使用for循环遍历所有文件(夹) for item in allItems: # 获取文件后缀名 extension = os.path.splitext(item)[1].lower() # 定义一个变量targetPath,用来表示准备移动到的文件夹路径 targetPath = "" if extension in [".jpg", ".jpeg", ".gif", ".png", ".bmp"]: # 使用os.path.join()函数拼接分类文件夹路径:图片文件 targetPath = os.path.join(downloadPath, " 图片文件") elif extension in [".avi", ".mp4", ".wmv", ".mov", ".flv"]: # 使用os.path.join()函数拼接分类文件夹路径:视频文件 targetPath = os.path.join(downloadPath, " 视频文件") elif extension in [".wav", ".mp3", ".mid", ".ape", ".flac"]: # 使用os.path.join()函数拼接分类文件夹路径:音频文件 targetPath = os.path.join(downloadPath, " 音频文件") elif extension in [".pdf"]: # 使用os.path.join()函数拼接分类文件夹路径:PDF文件 targetPath = os.path.join(downloadPath, "PDF 文件") elif extension in [".docx", ".doc"]: # 使用os.path.join()函数拼接分类文件夹路径:Word文件 targetPath = os.path.join(downloadPath, "Word 文件") elif extension in [".xlsx", ".xls"]: # 使用os.path.join()函数拼接分类文件夹路径:Excel文件 targetPath = os.path.join(downloadPath, "Excel 文件") elif extension in [".pptx", ".ppt"]: # 使用os.path.join()函数拼接分类文件夹路径:PPT文件 targetPath = os.path.join(downloadPath, "PPT 文件") else: # 使用os.path.join()函数拼接分类文件夹路径:其他文件 targetPath = os.path.join(downloadPath, " 其他文件") # 如果目标文件夹不存在,使用os.mkdir()函数创建文件夹 if not os.path.exists(targetPath): os.mkdir(targetPath) # 使用os.path.join()函数拼接文件路径,并赋值给变量itemPath itemPath = os.path.join(downloadPath, item) # 判断当itemPath路径不是文件夹时,移动文件到分类文件夹去 if not os.path.isdir(itemPath): # 使用shutil.move()函数移动文件到targetPath路径 shutil.move(itemPath, targetPath) |
| shutil.move()函数可以用来移动文件或文件夹。它接收两个参数,第一个参数是要移动的文件(夹)路径,第二个参数是目标文件(夹)的路径。 |

至此,我们帮助阿文编写的,对文件自动分类并移动的代码就全部完成啦。可以发现,几乎是一瞬间,几十个文件就全部分类并移动到指定的文件夹了。

相关推荐
superman超哥1 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
用户8007165452001 小时前
HTAP数据库国产化改造技术可行性方案分析
数据库
进击的六角龙1 小时前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
一只爱好编程的程序猿1 小时前
Java后台生成指定路径下创建指定名称的文件
java·python·数据下载
Aniay_ivy1 小时前
深入探索 Java 8 Stream 流:高效操作与应用场景
java·开发语言·python
gonghw4031 小时前
DearPyGui学习
python·gui
向阳12182 小时前
Bert快速入门
人工智能·python·自然语言处理·bert
engchina2 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina2 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
兆。2 小时前
掌握 PyQt5:从零开始的桌面应用开发
开发语言·爬虫·python·qt