python:文件管理

文件分类:
假设某个路径下的文件杂乱不堪,那我们现在要把这些个文件按照文件的类型进行分类。

    那我们要把文档的这些个文件放到一个文件夹中
    创建"文档"文件夹,收录这些内容:excel文件,doc文件,ppt文件,txt文件
    创建"图片"文件夹,收录图片文件:png,jpg,gif
    创建"音频"文件夹,收录音频文件:mp3,wma,acc
    创建"视频"文件夹,收录视频文件:avi,mp4,mkv 
    创建"其他"文件夹,收录除此以外的其他文件
import os
import shutil

path = r'D:\test'

file_types = {
    '文档': ['xls', 'xlsx', 'doc', 'docx', 'ppt', 'pptx', 'txt'],
    '图片': ['png', 'jpg', 'gif'],
    '音频': ['mp3', 'wma', 'acc'],
    '视频': ['mp4', 'avi', 'mkv'],
    '其他': []
}

for file_type in file_types.keys():
    if not os.path.exists(path + '\\' + file_type):
        os.mkdir(path + '\\' + file_type)
        print(f'正在创建{file_type}文件夹。')
    else:
        print(f'{file_type}文件夹已存在。')

for file in os.scandir(path):
    if file.is_file():
        file_suffix = file.name.split('.')[-1].lower()
        for key, suffixs in file_types.items():
            if file_suffix in suffixs:
                print(file.path, key)
                shutil.move(file.path, path + '\\' + key)
        else:
            shutil.move(file.path, path + '\\' + key)


import os
from shutil import move

src_path = '' # 待处理文件路径
dst_path = '' # 目标路径

doc_path = dst_path + '/' + '文档'
pig_path = dst_path + '/' + '图片'
audio_path = dst_path + '/' + '音频'
video_path = dst_path + '/' + '视频'
other_path = dst_path + '/' + '其他'

all_class = [doc_path, pig_path, audio_path, video_path, other_path]

for path in all_class:              #判断路径是否存在,如果没有则创建
    if not os.path.exists(path):
        os.mkdir(path)

os.chdir(src_path)
for file in os.listdir(src_path):
    if file[-4:0] in ['.excel', '.doc', '.ppt', '.txt']:
        file_name = (os.path.splitext(file)[0])
        move(src_path + '/' + file_name, doc_path + '/' + file_name)

    elif file[-4:0] in ['.png', '.jpg', '.gif']:
        file_name = (os.path.splitext(file)[0])
        move(src_path + '/' + file_name, pig_path + '/' + file_name)

    elif file[-4:0] in ['.mp3', '.wma', '.acc']:
        file_name = (os.path.splitext(file)[0])
        move(src_path + '/' + file_name, audio_path + '/' + file_name)

    elif file[-4:0] in ['.avi', '.mp4', '.mkv']:
        file_name = (os.path.splitext(file)[0])
        move(src_path + '/' + file_name, video_path + '/' + file_name)

    else:
        file_name = (os.path.splitext(file)[0])
        move(src_path + '/' + file_name, other_path + '/' + file_name)

望采纳