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] 
这一句先以“.”作为分隔符将文件名字符串拆分成文件主名和扩展名两个部分;然后以列表切片的方式,用[-1]提取列表的最后一个元素,即扩展名;最后将扩展名与第2行代码指定的目标文件夹路径拼接在一起,得到一个完整路径

方法二:使用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基础语法+做算法题的应用+python自动化办公+pymysql+python网络爬虫

全部评论
长知识了!感谢大神
1
送花
回复
分享
发布于 2022-08-18 15:19 江苏

相关推荐

TP-LINK 前端工程师 年包大概20出头 本科
点赞 评论 收藏
转发
1 1 评论
分享
牛客网
牛客企业服务