一键自动整理文件!简单好用的Python脚本
我以前經常把下載的東西放在桌面或者“下載”文件夾中,使用后再也沒管它,久而久之文件夾就變得亂七八糟,再整理的時候非常痛苦,巴不得有一個自動化的工具幫我歸類文檔。
不知道你是不是有過跟我一樣糟糕的體驗,不過,前段時間我用Python做了一個根據后綴名整理文件的工具,先來看看效果:
自動整理前:
自動整理后:
效果非常好,舒服多了,如果你想要直接下載源代碼試試看,請在公眾號后臺回復?文件自動整理?獲得源代碼下載地址。
1.準備
開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南?進行安裝。
(可選1)?如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.
(可選2)?此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南。
你只需要修改源代碼主程序中調用?auto_organize函數的參數即可完成對對應文件夾的整理,比如我想整理??C:\Users\83493\Downloads?文件夾:
if?__name__ == "__main__":auto_organize(r"C:\Users\83493\Downloads")
如上所示,修改代碼第61行的文件夾地址即可。修改完成后運行該腳本:
就能瞬間完成對指定文件夾的整理,極其方便。
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():# 如果是文件夾則跳過continuefile_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:pass3.自定義整理
如果你并不想按照設定好的文件整理,希望能自定義地將某些特定后綴的文件放到另一個文件夾,比如 .py 文件統一收納到“Python腳本”文件夾中,你可以這么改 DIRECTORIES 變量:
改動前:
DIRECTORIES = {# ......"編程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],# ...... }改動后:
DIRECTORIES = {# ......"編程": [".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],"Python腳本": [".py"],# ...... }你可以按照這個方法,自定義收納那些你需要整理收納的文件格式。
如果你只想對 DIRECTORIES 變量里那些后綴的文件進行整理,不屬于這些后綴的文件則不進行整理,不需要放到“其他文件”目錄下,此時要怎么做?
很簡單,你只需要刪除以下部分代碼就可以完成這個功能:
# ......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 # ......怎么樣,是不是很方便?如果這個簡單的腳本幫助到了你,請轉發給需要的人哦。
在上面原理一節中我已經將所有源代碼都講完了,如果你不想復制粘貼,也可以在Python實用寶典公眾號后臺回復?文件自動整理 獲得完整源代碼下載地址。
我們的文章到此就結束啦,如果你喜歡今天的Python 實戰教程,請持續關注Python實用寶典。
有任何問題,可以在公眾號后臺回復:加群,回答相應紅字驗證信息,進入互助群詢問。
原創不易,希望你能在下面點個贊和在看支持我繼續創作,謝謝!
點擊下方閱讀原文可獲得更好的閱讀體驗
Python實用寶典?(pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典
總結
以上是生活随笔為你收集整理的一键自动整理文件!简单好用的Python脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PySpark 相关基础知识
- 下一篇: vaa3d_神经元追踪算法介绍之snac