python自動(dòng)化辦公之——文件分類(lèi)整理

最近幫朋友處理一件工作的時(shí)候,發(fā)現(xiàn)其有很多文件歸納的任務(wù),其都是手工一個(gè)一個(gè)復(fù)制到新建的文件夾,工作機(jī)械且很容易出錯(cuò),這里寫(xiě)了一個(gè)文件自動(dòng)歸納整理的程序,能快速實(shí)現(xiàn)文件的自動(dòng)歸類(lèi)整理。

下面是一個(gè)所有人名資料混合在一起的一個(gè)文件夾,能看到有111個(gè)項(xiàng)目,如果人工一個(gè)一個(gè)復(fù)制很容易出錯(cuò)。現(xiàn)在的任務(wù)是需要將每個(gè)人的資料提取出來(lái),并且單獨(dú)存儲(chǔ)到各自的文件夾中。


匯總在一起的文件,需要根據(jù)人名進(jìn)行歸類(lèi)

示例代碼如下,執(zhí)行過(guò)程中將要進(jìn)行歸類(lèi)的文件路徑復(fù)制輸入即可:

import os
import re      #導(dǎo)入正則模塊,提取姓名用
import shutil    #導(dǎo)入用來(lái)移動(dòng)文件的模塊

while True:     #循環(huán)輸入
    path = input('請(qǐng)輸入要整理文件所在路徑')   #記錄輸入的路徑
    try:
        list1 = os.listdir(path)    #遍歷選擇的文件夾
        #以下操作使用正則提取文件名的漢字部分做文件名使用
        list2 = [re.findall(r'[\u4e00-\u9fa5]',str) for str in list1]
        list=[]
        for i in list2:
            if i not in list:
                list.append(''.join(i))

        for j in range(0,len(list1)):    #遍歷文件列表,這里仍然需要遍歷list1,因?yàn)閘ist1才是所有的文件,list只是一個(gè)單獨(dú)的姓名列表
            filepath = os.path.join(path,list1[j])   #記錄遍歷到的文件名
            if os.path.isfile(filepath):   #判斷是否為文件
                dirname = list[j]  #使用處理過(guò)的list姓名列表里的姓名作為文件夾名
                dirpath = os.path.join(path,dirname)  #拼接文件夾路徑
                if not os.path.exists(dirpath):     #判斷文件夾路徑是否存在
                    os.mkdir(dirpath)
                shutil.move(filepath,os.path.join(dirpath,list1[j]))   #移動(dòng)文件進(jìn)行整理
        print('整理完成。。。')
    except:
        print('請(qǐng)輸入一個(gè)有效路徑')


執(zhí)行結(jié)果如下,快速將各姓名文件歸類(lèi)到單獨(dú)的文件夾:


已經(jīng)歸類(lèi)好的文件夾

注:本例如果文件名的前面幾個(gè)字符數(shù)固定,如都是三個(gè)漢字,或者都是兩個(gè)漢字,就不需要單獨(dú)提取漢字的過(guò)程,直接使用切片提取文件名的前幾個(gè)字符作為文件夾的名字,流程相對(duì)簡(jiǎn)單。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容