詳解Python如何通過(guò)文件后綴整理文件夾
此前用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)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
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ù)增刪查改
我們?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ò)濾方法示例,文中通過(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ī)名代碼示例,涉及用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)的功能,文章的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的朋友可以學(xué)習(xí)一下2021-12-12
python實(shí)現(xiàn)的接收郵件功能示例【基于網(wǎng)易POP3服務(wù)器】
這篇文章主要介紹了python實(shí)現(xiàn)的接收郵件功能,結(jié)合實(shí)例形式分析了Python基于網(wǎng)易POP3服務(wù)器接收郵件相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
詳解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

