Python腳本實(shí)現(xiàn)一鍵自動(dòng)整理辦公文件
導(dǎo)語(yǔ):
舉例:Python做一個(gè)根據(jù)后綴名整理文件的工具,先來(lái)看看效果:
自動(dòng)整理前:
自動(dòng)整理后:
這樣看起來(lái)就好很多了。
1.準(zhǔn)備
開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:python Windows最新版本安裝教程
我們只需要修改源代碼主程序中調(diào)用 auto_organize
函數(shù)的參數(shù)即可完成對(duì)對(duì)應(yīng)文件夾的整理,比如我想整理 C:\Users\83493\Downloads 文件夾:
if __name__ == "__main__": ? ? auto_organize(r"C:\Users\83493\Downloads")
如上所示:修改代碼第61行的文件夾地址即可。修改完成后運(yùn)行該腳本:
python auto_files.py
就能瞬間完成對(duì)指定文件夾的整理,極其方便。
2.原理
這份代碼的原理很簡(jiǎn)單,為了整理這些文件,我們要遍歷當(dāng)前指定的文件夾:如果是文件夾則跳過(guò),如果是文件則檢測(cè)后綴,分類到對(duì)應(yīng)的文件夾中。文件夾名字及其對(duì)應(yīng)的文件后綴如下:
DIRECTORIES = { ? ? "圖片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg", ? ? ? ? ? ? ? ?".heif", ".psd"], ? ? "視頻": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ? ? ? ? ? ? ? ?".qt", ".mpg", ".mpeg", ".3gp", ".mkv"], ? ? "文檔": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods", ? ? ? ? ? ? ? ? ? ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox", ? ? ? ? ? ? ? ? ? ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt", ? ? ? ? ? ? ? ? ? "pptx",".csv",".pdf"], ? ? "壓縮文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z", ? ? ? ? ? ? ? ? ?".dmg", ".rar", ".xar", ".zip"], ? ? "影音": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3", ? ? ? ? ? ? ? ".msv", "ogg", "oga", ".raw", ".vox", ".wav", ".wma"], ? ? "文本": [".txt", ".in", ".out"], ? ? "編程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"], ? ? "可執(zhí)行程序": [".exe"], }
接下來(lái)是自動(dòng)整理的部分代碼,先遍歷指定的文件夾,識(shí)別后綴并分類到對(duì)應(yīng)的文件夾中。
for entry in os.scandir(dirval): ? ? if entry.is_dir(): ? ? ? ? # 如果是文件夾則跳過(guò) ? ? ? ? continue ? ? file_path = Path(dirval + "\\" + entry.name) ? ? file_format = file_path.suffix.lower() ? ? # 避免后綴大小寫判斷問(wèn)題,全轉(zhuǎn)為小寫 ? ? if file_format in FILE_FORMATS: ? ? ? ? directory_path = Path(dirval + "\\" + FILE_FORMATS[file_format]) ? ? ? ? directory_path.mkdir(exist_ok=True) ? ? ? ? file_path.rename(directory_path.joinpath(entry.name))
還有出現(xiàn)不存在在我們字典里的后綴的情況,把它們分類到名為 其他文件 的文件夾中:
try: ? ? os.mkdir(dirval + "\\" +"其他文件") except: ? ? pass ? for dir in os.scandir(dirval): ? ? try: ? ? ? ? if dir.is_dir(): ? ? ? ? ? ? # 刪除空文件夾 ? ? ? ? ? ? os.rmdir(dir) ? ? ? ? else: ? ? ? ? ? ? temp = str(Path(dir)).split('\\') ? ? ? ? ? ? # 分割文件路徑 ? ? ? ? ? ? path = '\\'.join(temp[:-1]) ? ? ? ? ? ? print(path + '\\其他文件\\' + str(temp[-1])) ? ? ? ? ? ? os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1])) ? ? except: ? ? ? ? pass
3.自定義整理
如果你并不想按照設(shè)定好的文件整理,希望能自定義地將某些特定后綴的文件放到另一個(gè)文件夾,比如 .py 文件統(tǒng)一收納到“Python腳本”文件夾中,你可以這么改 DIRECTORIES
變量:
DIRECTORIES = { ? ? # ...... ? ? "編程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"], ? ? # ...... }
改動(dòng)后:
DIRECTORIES = { ? ? # ...... ? ? "編程": [".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"], ? ? "Python腳本": [".py"], ? ? # ...... }
我們可以按照這個(gè)方法,自定義收納那些你需要整理收納的文件格式。
如果只想對(duì) DIRECTORIES
變量里那些后綴的文件進(jìn)行整理,不屬于這些后綴的文件則不進(jìn)行整理,不需要放到“其他文件”目錄下,此時(shí)要怎么做?
很簡(jiǎn)單,你只需要?jiǎng)h除以下部分代碼就可以完成這個(gè)功能:
try: ? ? ? ? os.mkdir(dirval + "\\" +"其他文件") ? ? except: ? ? ? ? pass ? ? ? for dir in os.scandir(dirval): ? ? ? ? try: ? ? ? ? ? ? if dir.is_dir(): ? ? ? ? ? ? ? ? # 刪除空文件夾 ? ? ? ? ? ? ? ? os.rmdir(dir) ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? temp = str(Path(dir)).split('\\') ? ? ? ? ? ? ? ? # 分割文件路徑 ? ? ? ? ? ? ? ? path = '\\'.join(temp[:-1]) ? ? ? ? ? ? ? ? print(path + '\\其他文件\\' + str(temp[-1])) ? ? ? ? ? ? ? ? os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1])) ? ? ? ? except: ? ? ? ? ? ? pass # ......
小編覺(jué)得這樣就很方便。
到此這篇關(guān)于Python實(shí)現(xiàn)腳本一鍵自動(dòng)整理辦公文件的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)自動(dòng)整理文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解
Matplotlib?提供了大量配置參數(shù),這些參數(shù)可以但不限于讓我們從整體上調(diào)整通過(guò)?Matplotlib?繪制的圖形樣式,下面我們就來(lái)看看如何巧妙的運(yùn)用這些參數(shù)吧2023-08-08python?動(dòng)態(tài)規(guī)劃問(wèn)題解析(背包問(wèn)題和最長(zhǎng)公共子串)
這篇文章主要介紹了python?動(dòng)態(tài)規(guī)劃(背包問(wèn)題和最長(zhǎng)公共子串),在動(dòng)態(tài)規(guī)劃中,你要將某個(gè)指標(biāo)最大化。在這個(gè)例子中,你要找出兩個(gè)單詞的最長(zhǎng)公共子串。fish和fosh都包含的最長(zhǎng)子串是什么呢,感興趣的朋友跟隨小編一起看看吧2022-05-05Python中import導(dǎo)入上一級(jí)目錄模塊及循環(huán)import問(wèn)題的解決
Python中的import語(yǔ)句導(dǎo)入模塊相信大家再熟悉不過(guò)了,這里我們會(huì)來(lái)講解Python中import導(dǎo)入上一級(jí)目錄模塊及循環(huán)import問(wèn)題的解決,需要的朋友可以參考下2016-06-06python編輯用戶登入界面的實(shí)現(xiàn)代碼
這篇文章主要介紹了python編輯用戶登入界面的實(shí)現(xiàn)代碼,非常不錯(cuò),代碼簡(jiǎn)單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07python中對(duì)_init_的理解及實(shí)例解析
這篇文章主要介紹了python中對(duì)_init_的理解及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10python中is與雙等于號(hào)“==”的區(qū)別示例詳解
Python中有很多運(yùn)算符,下面這篇文章主要給大家介紹了關(guān)于python中is與雙等于號(hào)“==”區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11