本文实现对文件夹中的文件分类拷贝,按照文件类型建立文件夹并移动相应文件到文件夹中,实现文件的自动分类管理。
Shutil模块可实现文件拷贝,移动重命名等功能,使用os.walk()遍历文件夹中文件。
直接上代码,调用函数,参数给定文件夹路径即可。
import shutil,os
def sortFile(folder):
# 获取文件夹的绝对路径
folder = os.path.abspath(folder)
#建立一个“sorted”文件夹用以存储分类文件,判断文件夹中是否存在改文件,不存在就建立
if "sorted" not in os.listdir(folder):
os.makedirs(folder+"\\sorted")
#遍历文件夹中文件
for foldername ,subfolders, filenames in os.walk(folder):
for filename in filenames:
#由于有的文件没有后缀名,所以进行一个判断,把没有后缀名的文件丢到“other”文件夹中,否则就取文件后缀名命名分类文件夹
filesplit = filename.split(".")
if len(filesplit) < 2:
filetype = "other"
else:
filetype = filesplit[-1]
#print(filetype)
new_folder = folder + "\\sorted"
#拼合文件路径并建立文件夹
filedir = os.path.join(new_folder,filetype)
if filetype not in os.listdir(new_folder):
os.makedirs(filedir)
print("%s dir established"%filetype)
#文件移动前后的路径
oldfilepath = os.path.join(foldername,filename)
newfilepath = os.path.join(filedir,filename)
#因为文件夹中可能存在重复的文件,复制重复的文件会导致报错,出现错误时打印一个信息,继续后继工作
try:
shutil.copy(oldfilepath,newfilepath)
except:
print("a duplicated file")
continue
print("copy %s to %s"%(oldfilepath,newfilepath))
调用函数后文件按照后缀名分类自动放置到对应的文件夹中,如下图所示: