Python文件名相似度比较自动分类

有时候电脑上文件过多,但是格式又不统一,形如这样的

Python文件名相似度比较自动分类_第1张图片

想按照图中的类型自动分类然后移动到不同的文件夹

Python文件名相似度比较自动分类_第2张图片

用Python的代码为:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

import os;
import shutil;
import difflib;

#fileDir=os.getcwd();
fileDir="E:\lib"

#定义搜索文件函数
def sourceAllFile(file_list,filedir_list):
    file_dict = {}
    for parent,dirnames,filenames in os.walk(fileDir):
        for filename in filenames:
            filedir_list.append(os.path.join(parent,filename))
            file_list.append(filename)
            file_dict[filename]=os.path.join(parent,filename)

    #返回的字典按照key排序,正序
    return sorted(file_dict.items(),key=lambda f:f[0],reverse=False)

#查看文件是否相同
def checkSimFile2(dict):
    index=0;
    dict_len=len(dict);
    result_set=set()
    result_obj={}
    result_bak='';
    while index0:
                    result_obj[result_bak]=tuple(result_set);
                    result_set=set();
                break;
            #否则继续和下下一个比较
            else:
                result_bak=old_str[0:6];
                result_set.add(dict[index][1])
                result_set.add(dict[new_index][1])
                new_index=new_index+1;
        else:
            #内部循环完后
            if len(result_set)>0:
                    result_obj[result_bak]=tuple(result_set)
                    result_set=set()
            break
    return result_obj;

#比较文件名    
def compareFileName(ori_str,new_str):
    index=0
    for oin in range(len(ori_str)):
        if ori_str[oin]==new_str[oin] and oin<=6:
            index=index+1
            continue
        else:
            break
    fileDir=ori_str[0:index]
    return fileDir,index

#文件移动
def classify_file(file_obj):
    for oldir,files in file_obj.items():
        newdir=fileDir+"//"+oldir
        if not os.path.exists(newdir):
            os.mkdir(newdir)
        for val in files:
            try:
                shutil.move(val,newdir);
            except:
                OSError
            
            

#主函数入口
if __name__=='__main__':
    #所有文件名
    file_list=[];
    #所有文件名绝对路径
    filedir_list=[];
    #文件名和路径的字典
    file_dict=sourceAllFile(file_list,filedir_list);
    file_obj=checkSimFile(file_dict);
    classify_file(file_obj);

打印 file_obj

Python文件名相似度比较自动分类_第3张图片


刚入门Python,有大佬有更好的方法或者发现有问题的,请在下方不弄赐教

你可能感兴趣的:(Python)