本文連結:https://blog.csdn.net/qq_38887171/article/details/111663429
我以前經常把下載的東西放在桌面或者“下載”資料夾中,使用完後再也沒管它,久而久之便變得亂七八糟,再整理的時候非常痛苦,巴不得有一個自動化的工具幫我歸類文件。
不知道你是不是有過跟我一樣糟糕的體驗,不過,前段時間我用Python做了一個根據字尾名整理檔案的工具,先來看看效果:
自動整理前:
自動整理後:
效果非常好,感覺舒服多了
很多人學習python,不知道從何學起。很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。很多已經做案例的人,卻不知道如何去學習更加高深的知識。那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取影片教程,電子書籍,以及課程的原始碼!私信小編01即可獲取大量Python學習資料
使用1.準備開始之前,你要確保Python和pip已經成功安裝在電腦上。
你只需要修改原始碼主程式中呼叫 auto_organize函式的引數即可完成對對應檔案的整理,比如我想整理 C:\Users\83493\Downloads資料夾:
if __name__ == "__main__": auto_organize(r"C:\Users\83493\Downloads")如上所示,修改程式碼第61行的資料夾地址即可。修改完成後執行該指令碼:
python auto_files.py
就能瞬間完成對指定資料夾的整理,極其方便。
2.原理為了整理這些檔案,我們要遍歷當前指定的資料夾:如果是資料夾則跳過,如果是檔案則檢測字尾,分類到對應的資料夾中。資料夾名字及其對應的檔案字尾如下:
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"], "可執行程式": [".exe"],}接下來是自動整理的部分程式碼,先遍歷指定的資料夾,識別字尾並分類到對應的資料夾中。
for entry in os.scandir(dirval): if entry.is_dir(): # 如果是資料夾則跳過 continue file_path = Path(dirval + "\\" + entry.name) file_format = file_path.suffix.lower() # 避免字尾大小寫判斷問題,全轉為小寫 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))還有出現不存在在我們字典裡的字尾的情況,把它們分類到名為 其他檔案 的資料夾中:
try: os.mkdir(dirval + "\\" +"其他檔案")except: passfor 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最後再把以上這些部分整理成函式進行呼叫即可。