欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python如何通過(guò)文件后綴整理文件夾

 更新時(shí)間:2024年02月06日 09:49:36   作者:微小冷  
這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)文件后綴實(shí)現(xiàn)整理文件夾功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

此前用Python實(shí)現(xiàn)了根據(jù)文件后綴整理文件夾的方法,見(jiàn)此文:Python根據(jù)文件后綴整理文件夾。但這篇博客并沒(méi)有進(jìn)行良好的封裝,下面仍以文件夾整理為目的,用類來(lái)重新實(shí)現(xiàn)次功能。

文件夾類型字典

根據(jù)熵增原理,我們的文件夾在經(jīng)過(guò)一段時(shí)間之后會(huì)變得混亂不堪,尤其是桌面和下載文件夾,找個(gè)東西會(huì)十分費(fèi)勁,特別影響效率,所以用Python做一個(gè)文件夾整理小工具還是很有必要的。

而最常見(jiàn)的整理方法,就是按照文件類型,為了實(shí)現(xiàn)這個(gè)目標(biāo),可以先做一個(gè)文件類型字典,來(lái)綁定文件類型和后綴。

為此,可創(chuàng)建一個(gè)類

class FileSystem:
    def __init__(self, root) -> None:
        self.fileDct = FILE_DCT

其中FILE_DCT是默認(rèn)的文件字典,

# 封裝在
FILE_DCT = {
    "圖片"  : [".jpg", ".png", ".jpeg", ".gif"],
    "視頻"  : [".mp4", ".mkv"],
    "音樂(lè)"  : [".mp3", ".wav"],
    "文檔"  : [".pdf"],
    "文本"  : [".csv", ".txt"],
    "源碼"  : [".py", ".c", ".cpp", ".php"],
    "office": [".docx",".xlsx", ".pptx", ".doc", ".ppt", ".xls"],
    "壓縮包": [".zip", ".tgz", ".rar", ".tar", ".7z"],
    "安裝包": [".msi", ".exe"],
}

而文件整理的邏輯是,先創(chuàng)建圖片、視頻等文件夾,然后通過(guò)文件的后綴找到其對(duì)應(yīng)的文件類別,然后移動(dòng)到相應(yīng)的文件夾。為了更加便捷地實(shí)現(xiàn)這個(gè)功能,做一個(gè)反向的字典,用以通過(guò)后綴返回文件夾

# FileSystem的成員方法,復(fù)制時(shí)注意縮進(jìn)
def setExDct(self):
    self.exDct = {}
    for key in self.fileDct:
        self.exDct.update({ex:key for ex in self.fileDct[key]})

考慮到更新字典的可能性,創(chuàng)建update方法。

def update(self, dct):
    self.fileDct = dct
    self.setExDct()

移動(dòng)文件

接下來(lái)就是移動(dòng)文件,這里面有兩個(gè)問(wèn)題,一是目標(biāo)文件夾不存在,則需要新建;二則是目標(biāo)文件夾中已經(jīng)有了同名文件,那么則需要報(bào)錯(cuò)

import os
import shutil
pJoin = os.path.join
pExist = os.path.exists

    # 此為FileSystem的成員方法
    def mvFile(self, src, dst):
        if not pExist(dst):
            os.makedirs(dst)
        try:
            shutil.move(src, dst)
            return True
        except Exception as e:
            print(e)
            return False

主流程

接下來(lái)就是整個(gè)文件夾整理的主流程

from pathlib import Path

# FileSystem的成員方法,復(fù)制時(shí)注意縮進(jìn)
# tar是準(zhǔn)備整理的文件夾
def sortFiles(self, tar):
    files = os.listdir(tar)
    fsErr = []
    self.history = []
    for f in files:
        src = pJoin(tar, f)
        print(src)
        ex = Path(src).suffix.lower()
        if ex not in self.exDct:
            continue
        dst = pJoin(tar, self.exDct[ex])
        if self.mvFile(src, dst):
            self.history.append([src, dst])
        else:
            fsErr.append(src)
    self.setErrInfo(fsErr)

# 設(shè)置錯(cuò)誤信息
def setErrInfo(self, fsErr):
    SUCCESS = "全部文件移動(dòng)成功"
    ERROR = "以下文件移動(dòng)失?。篭r\n"
    if len(fsErr) == 0:
        self.errInfo = SUCCESS
    else:
        self.errInfo = ERROR + "\r\n".join(fsErr)

其中,self.history用于存儲(chǔ)復(fù)制結(jié)果,如果感覺(jué)整理邏輯不對(duì),想要恢復(fù)整理之前的樣子,則可動(dòng)用history中的列表。

# FileSystem的成員方法,復(fù)制時(shí)注意縮進(jìn)
def restore(self):
    fsErr = []
    for src, dst in self.history:
        if not self.mvFile(dst, src):
            fsErr.append(dst)
    self.setErrInfo(fsErr)

最后,為FileSystem這個(gè)類添加一個(gè)靜態(tài)方法,從而可以快速調(diào)用

    @staticmethod
    def sort(tar, fileDct=None):
        fs = FileSystem()
        if fileDct:
            fs.update(fileDct)
        fs.sortFiles(tar)

整理結(jié)果如下

到此這篇關(guān)于詳解Python如何通過(guò)文件后綴整理文件夾的文章就介紹到這了,更多相關(guān)Python整理文件夾內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python基本算法之實(shí)現(xiàn)歸并排序(Merge sort)

    python基本算法之實(shí)現(xiàn)歸并排序(Merge sort)

    這篇文章主要給大家介紹了關(guān)于python基本算法之實(shí)現(xiàn)歸并排序(Merge sort)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python采集騰訊新聞實(shí)例

    Python采集騰訊新聞實(shí)例

    這篇文章主要介紹了Python采集騰訊新聞實(shí)例,一個(gè)簡(jiǎn)單的例子,著重于實(shí)現(xiàn)步驟的講解,需要的朋友可以參考下
    2014-07-07
  • Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5菜單和工具欄功能作用

    Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5菜單和工具欄功能作用

    本文詳細(xì)解讀通過(guò) QtDesigner 創(chuàng)建主窗口、菜單欄和工具欄,并以菜單項(xiàng) “退出” 為例關(guān)聯(lián)系統(tǒng)定義的動(dòng)作處理方法。有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python3獲取電腦IP、主機(jī)名、Mac地址的方法示例

    Python3獲取電腦IP、主機(jī)名、Mac地址的方法示例

    這篇文章主要介紹了Python3獲取電腦IP、主機(jī)名、Mac地址的方法,結(jié)合具體實(shí)例形式分析了Python3基于socket與uuid模塊針對(duì)電腦的IP、主機(jī)名、Mac地址等信息的讀取操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • Python中join和split用法實(shí)例

    Python中join和split用法實(shí)例

    這篇文章主要介紹了Python中join和split用法實(shí)例,本文直接給出使用實(shí)例,需要的朋友可以參考下
    2015-04-04
  • python中的異步爬蟲(chóng)詳解

    python中的異步爬蟲(chóng)詳解

    這篇文章主要介紹了python中的異步爬蟲(chóng)詳解,所謂的異步異步?IO,就是發(fā)起一個(gè)?IO?阻塞的操作,但是不用等到它結(jié)束,可以在它執(zhí)行?IO?的過(guò)程中繼續(xù)做別的事情,當(dāng)?IO?執(zhí)行完畢之后會(huì)收到它的通知,需要的朋友可以參考下
    2023-08-08
  • Python Flask前后端Ajax交互的方法示例

    Python Flask前后端Ajax交互的方法示例

    這篇文章主要介紹了Python Flask前后端Ajax交互的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python讀取JSON數(shù)據(jù)操作實(shí)例解析

    Python讀取JSON數(shù)據(jù)操作實(shí)例解析

    這篇文章主要介紹了Python讀取JSON數(shù)據(jù)操作實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 對(duì)python numpy.array插入一行或一列的方法詳解

    對(duì)python numpy.array插入一行或一列的方法詳解

    今天小編就為大家分享一篇對(duì)python numpy.array插入一行或一列的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • pyqt5中QThread在使用時(shí)出現(xiàn)重復(fù)emit的實(shí)例

    pyqt5中QThread在使用時(shí)出現(xiàn)重復(fù)emit的實(shí)例

    今天小編就為大家分享一篇pyqt5中QThread在使用時(shí)出現(xiàn)重復(fù)emit的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06

最新評(píng)論