python之文件自动分类
方法一:用os和shutil
listdir()函数列出的不只是文件,还包括子文件夹。如果要用,只需修改src_folder 和des_folder 即可
import os import shutil src_folder = '……' #源文件路径名,都是//这样的斜杠 des_folder = '……' #目标文件路径名 files = os.listdir(src_folder) #列出指定路径下的所有文件和子文件夹的名称, listdir()函数返回的只是文件名 #print(files) #对文件进行分类整理 for i in files: src_path = src_folder + i #将源文件夹路径与列表中的文件名拼接起来,得到一个完整路径 if os.path.isfile(src_path): #isfile()函数判断这个完整路径是否为文件,如果是文件才进行后续操作 des_path = des_folder + i.split('.')[-1] #生成以文件扩展名命名的文件夹路径。 if not os.path.exists(des_path): #判断文件夹中是否存在以某个扩展名命名的文件夹 os.makedirs(des_path) #使用os模块的path子模块中的exists()函数判断代码生成的路径是否指向一个已存在的文件夹 shutil.move(src_path, des_path) #判断文件夹中是否存在以某个扩展名命名的文件夹
解释:
des_path = des_folder + i.split('.')[-1]
方法二:使用pathlib模块
glob()函数在源文件夹下查找文件和子文件夹,这里的'*'表示返回所有文件和子文件夹。需要注意的是,方法一中使用的listdir()函数返回的只是文件和子文件夹的名称,而这里使用的glob()函数返回的则是文件和子文件夹的完整路径。并且glob()函数还支持利用通配符查找符合特定规则的文件或文件夹:“*”可以匹配任意数量个(包括0个)字符,“?”可以匹配单个字符,“[]”可以匹配指定范围内的字符。
pathlib模块特有的路径拼接运算符“/”
from pathlib import Path#导入的是pathlib模块中的Path()函数,后面将会用它创建路径对象 src_folder = Path('F:\\代码文件\\第3章\\要分类的文件\\') des_folder = Path('F:\\代码文件\\第3章\\分类后的文件\\') files = src_folder.glob('*') #列出文件夹中要分类的所有文件的文件名 for i in files: #对文件进行分类整理 if i.is_file(): des_path = des_folder/i.suffix.strip('.') #生成以扩展名命名的文件夹路径。这里先用路径对象的suffix属性提取文件的扩展名 if not des_path.exists(): des_path.mkdir(parents=True) i.replace(des_path/i.name)
python基础工程师 文章被收录于专栏
python基础语法+做算法题的应用+python自动化办公+pymysql+python网络爬虫