最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解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)文章

  • 在PyTorch中使用標(biāo)簽平滑正則化的問(wèn)題

    在PyTorch中使用標(biāo)簽平滑正則化的問(wèn)題

    這篇文章主要介紹了如何在PyTorch中使用標(biāo)簽平滑正則化的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • OFD格式文件及如何適應(yīng)Python將PDF轉(zhuǎn)換為OFD格式文件

    OFD格式文件及如何適應(yīng)Python將PDF轉(zhuǎn)換為OFD格式文件

    OFD是中國(guó)自主研發(fā)的一種固定版式文檔格式,主要用于電子公文、檔案管理等領(lǐng)域,這篇文章主要介紹了OFD格式文件及如何適應(yīng)Python將PDF轉(zhuǎn)換為OFD格式文件的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • Pandas DataFrame操作數(shù)據(jù)增刪查改

    Pandas DataFrame操作數(shù)據(jù)增刪查改

    我們?cè)谟?nbsp;pandas 處理數(shù)據(jù)的時(shí)候,經(jīng)常會(huì)遇到用其中一列數(shù)據(jù)替換另一列數(shù)據(jù)的場(chǎng)景。這一類的需求估計(jì)很多人都遇到,當(dāng)然還有其它更復(fù)雜的。解決這類需求的辦法有很多,這里我們來(lái)推薦幾個(gè),這篇文章主要介紹了Pandas DataFrame操作數(shù)據(jù)的增刪查改
    2022-10-10
  • python用類實(shí)現(xiàn)文章敏感詞的過(guò)濾方法示例

    python用類實(shí)現(xiàn)文章敏感詞的過(guò)濾方法示例

    這篇文章主要介紹了python用類實(shí)現(xiàn)文章敏感詞的過(guò)濾方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python shell根據(jù)ip獲取主機(jī)名代碼示例

    python shell根據(jù)ip獲取主機(jī)名代碼示例

    這篇文章主要介紹了python shell根據(jù)ip獲取主機(jī)名代碼示例,涉及用socket模塊和shell中hostname命令獲取等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 基于Python實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)功能詳解

    基于Python實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)功能詳解

    這篇文章主要為大家介紹了基于Python如何實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)的功能,文章的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的朋友可以學(xué)習(xí)一下
    2021-12-12
  • python實(shí)現(xiàn)的接收郵件功能示例【基于網(wǎng)易POP3服務(wù)器】

    python實(shí)現(xiàn)的接收郵件功能示例【基于網(wǎng)易POP3服務(wù)器】

    這篇文章主要介紹了python實(shí)現(xiàn)的接收郵件功能,結(jié)合實(shí)例形式分析了Python基于網(wǎng)易POP3服務(wù)器接收郵件相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • Django REST Framework之頻率限制的使用

    Django REST Framework之頻率限制的使用

    這篇文章主要介紹了Django REST Framework之頻率限制的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 如何在Python中自定義異常類與異常處理機(jī)制

    如何在Python中自定義異常類與異常處理機(jī)制

    在Python編程中,異常處理是一種重要的編程范式,它允許我們?cè)诔绦蜻\(yùn)行時(shí)檢測(cè)并處理錯(cuò)誤,本文將介紹如何在Python中編寫(xiě)自定義的異常類,并詳細(xì)解釋Python的異常處理機(jī)制,感興趣的朋友一起看看吧
    2024-06-06
  • 詳解win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過(guò)程

    詳解win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過(guò)程

    這篇文章主要介紹了win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

惠州市| 四平市| 中西区| 侯马市| 泰安市| 宜丰县| 宿迁市| 滨州市| 开化县| 都昌县| 沙河市| 青神县| 平潭县| 义乌市| 太谷县| 宁晋县| 大足县| 怀宁县| 包头市| 资源县| 平潭县| 山西省| 宜良县| 庆安县| 城固县| 清远市| 河北省| 东乡族自治县| 彩票| 江油市| 晋州市| 克东县| 新田县| 商南县| 奎屯市| 西乌珠穆沁旗| 彝良县| 达拉特旗| 五华县| 罗定市| 岳阳县|