女朋友桌面文件雜亂無章?氣得我用Python給她做了一個文件整理工具

      網友投稿 941 2022-05-30

      先看效果圖

      寫在前面

      文件整理功能

      實現 GUI 界面

      設置界面主題樣式

      添加選擇路徑組件及功能實現

      添加“整理”,“撤銷”組件及功能實現

      添加輸出框顯示運行后的信息

      設置各個組件在界面的位置

      源碼打包

      寫在前面

      事情是這樣子的,昨天回去無意看了一下女朋友桌面,密密麻麻的全是文件,各式各樣的占滿屏幕,簡直要把我這個強迫癥給難受死,讓她整理一下,還懶的整理。

      于是中午沒休息寫了一個文件整理工具給這個懶豬,希望她能夠識抬舉,給我點獎勵~哈哈

      廢話不多說,進入正題!

      主要涉及到的庫:

      tkinter:實現 GUI 編程(文本框、按鈕、標簽等組件實現 GUI 開發)。

      pathlib:面向對象的編程方式來表示文件系統路徑。

      ttkthemes:tkinter 主題包,讓你的組件外觀更加騷。

      Pyinstaller:是一個非常簡單的打包 .py 文件的庫。

      文件整理功能

      本文實現的文件整理實際是一種文件分類的功能,將指定文件夾下的文件進行分類,并移動到該類別的文件夾下。

      首先需要定義一個文件類型的字典,來指定每個類別文件有哪些。

      FILE_TYPE = { "圖片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg", ".heif", ".psd", ".raw"], "視頻": [".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"], "編程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css", ".ipynb", ".h", '.class'], "可執行程序": [".exe"], }

      整體代碼的邏輯十分簡單:遍歷指定文件夾下的文件,忽略文件夾,只獲取文件,判斷文件類型是否在文件夾中出現,如果出現則移動到指定文件夾中(不存在文件夾則創建),否則歸類到其他文件中。

      from pathlib import Path dir_path = r'C:\Users\pc\Desktop\test' # 遍歷指定文件夾下的文件,忽略文件夾 for file_path in Path(dir_path).glob('*.*'): temp = 0 # 標志是否已經通過FILE_TYPE分類 for key, value in FILE_TYPE.items(): if file_path.suffix in value: sub_dir = Path(dir_path, key) # 某類文件夾路徑 if not sub_dir.exists(): sub_dir.mkdir(exist_ok=True) # 創建文件夾 file_path.rename(Path(sub_dir, file_path.name)) # 移動文件 temp = 1 break if temp == 0: sub_dir = Path(dir_path, '其他文件') if not sub_dir.exists(): sub_dir.mkdir(exist_ok=True) # 創建保存沒有被識別文件的文件夾 file_path.rename(Path(sub_dir, file_path.name)) # 移動文件

      實現 GUI 界面

      實現 GUI 界面時在原有功能上添加了一個還原按鈕,能夠撤銷文件整理的操作。

      設置界面主題樣式

      window = ThemedTk(theme="adapta", fonts=True, themebg=True)

      自定義 Label 樣式

      label_style = ttk.Style() label_style.configure("Label", font=("微軟雅黑", 22, 'bold'), foreground="red", background="yellow")

      添加 Label 標簽,并使用自定義的樣式

      # 添加標簽 label = tk.Label(window, text='?向日葵的專屬 sun?', style='Label')

      添加選擇路徑組件及功能實現

      女朋友桌面文件雜亂無章?氣得我用Python給她做了一個文件整理工具

      # 設置選擇路徑組件 path = tk.StringVar() entry = ttk.Entry(window, textvariable=path, width=30) button1 = ttk.Button(window,width=10, text = "選擇路徑", command = selectPath)

      點擊 “選擇路徑” 按鈕,執行 selectPath() 函數,將選擇的文件夾路徑傳遞給 entry 來顯示在界面上

      def selectPath(): global dir_path # 選擇文件path接收文件地址 dir_path = filedialog.askdirectory(title='選擇待整理的文件夾') # 通過replace函數替換絕對文件地址中的/來使文件可被程序讀取 dir_path.replace("/", r"\\") path.set(dir_path)

      添加“整理”,“撤銷”組件及功能實現

      # 添加“整理”按鈕 button2 = ttk.Button(window,width=10, text = "整理", command = organize_files) # 添加“還原”按鈕 button3 = ttk.Button(window,width=10, text = "還原", command = cancle_organize)

      點擊“整理”按鈕,執行 organize_files() 函數,實現文件整理,并記錄文件原路徑與新路徑,同時也要記錄新創建的文件夾路徑,因為還原操作時要將新創建的文件夾進行刪除。

      def organize_files(): if dir_path == '': tree.heading("#0", text="還未選取路徑哦") return None global organize_temp organize_temp = 1 # 遍歷指定文件夾下的文件,忽略文件夾 for file_path in Path(dir_path).glob('*.*'): temp = 0 # 標志是否已經通過FILE_TYPE繼續分類 for key, value in FILE_TYPE.items(): if file_path.suffix in value: sub_dir = Path(dir_path, key) # 某類文件夾路徑 if not sub_dir.exists(): sub_dir.mkdir(exist_ok=True) # 創建文件夾 create_dir_path.append(sub_dir) file_path.rename(Path(sub_dir, file_path.name)) # 移動文件 old_file_path[Path(sub_dir, file_path.name)] = file_path temp = 1 break if temp == 0: sub_dir = Path(dir_path, '其他文件') if not sub_dir.exists(): sub_dir.mkdir(exist_ok=True) # 創建保存沒有被識別文件的文件夾 create_dir_path.append(sub_dir) file_path.rename(Path(sub_dir, file_path.name)) # 移動文件 old_file_path[Path(sub_dir, file_path.name)] = file_path tree.heading("#0", text="整理完成")

      點擊“還原”按鈕,執行 cancle_organize() 函數,還原文件至整理之前

      def cancle_organize(): if organize_temp == 0: tree.heading("#0", text="還未整理哦") return None for new_path, old_path in old_file_path.items(): new_path.rename(old_path) # 還原文件 for dir_path in create_dir_path: dir_path.rmdir() # 不能使用unlink()來刪除,報錯無權限 tree.heading("#0", text="還原成功")

      添加輸出框顯示運行后的信息

      # 添加輸出框顯示 tree = ttk.Treeview(height=1, show=("tree", "headings"))

      設置各個組件在界面的位置

      # 設置組件位置 label.grid(row=0, column=0, padx=20, pady=40) entry.grid(row = 3, column = 0, pady=5) button1.grid(row = 3, column = 1, padx=20) button2.grid(row = 4, column = 0, pady=5) button3.grid(row = 5, column = 0, pady=5) tree.grid(row=6, column=0, pady=5)

      至此,一個文件整理的小工具就已經實現了。整體界面如下:

      源碼打包

      首先要確保已經安裝 pyinstaller,沒有安裝的可以先安裝一下。

      pip install -i https://pypi.douban.com/simple pyinstaller

      pyinstaller 使用時的常用參數含義:

      -F:打包單個文件,產生一個文件用于部署(默認),如果代碼都寫在一個 .py 文件時使用,項目有多個文件時不要使用

      pyinstaller -F xxx.py

      -D:打包多個文件,產生一個目錄用于部署(默認),用于框架編寫的代碼打包

      pyinstaller -D xxx.py(項目入口文件)

      –key=keys:使用 keys 進行加密打包

      pyinstaller --key=123456 -F xxx.py

      -d:產生 debug 版本的可執行文件

      -p:用來添加程序所用到的包的所在位置,設置導入路徑,可以用 ; ( Linux 使用 :)分割來指定多個目錄。

      -w:表示不用控制臺窗口,使用 Windows 子系統執行,當程序啟動的時候不會打開命令行(只對 Windows 有效)

      -c:表示打開控制臺窗口,使用控制臺子系統執行,當程序啟動的時候會打開命令行(默認)(只對 Windows 有效)

      -i:將 file.ico 添加為可執行文件的資源,改變程序的圖標(只對 Windows 系統有效)

      安裝完成后,新建一個文件夾,將源文件放到該文件夾下面,打開cmd, cd 進入該文件夾下(重點),執行下面語句

      生成的文件結構如下

      exe 可執行文件在 dist 目錄下

      到這里就可以把 .exe 文件發送別人了,并且可以在沒有任何配置的情況下運行哦~(前提是同樣是 Windows 下)

      這里的圖標是我自己在網上找的。

      如果沒有 ico 格式的圖標的話,

      推薦一個免費的 icon 網站:https://iconstore.co/

      然后在 https://www.aconvert.com/cn/icon/svg-to-ico/ 轉換成指定大小的 ico 圖標。

      晚上去找女朋友領獎勵~

      這就是本文所有的內容了,如果感覺還不錯的話。

      ? 點個贊再走吧?。。?

      后續會繼續分享各種有趣的文章,如果感興趣的話可以點個關注不迷路哦~。

      源碼可以通過可以通微信搜 Python新視野,回復“文件整理工具”直接獲取。對于剛入門 Python 或是想要入門 Python 的小伙伴,也可以通過上述方式一起交流學習,都是從新手走過來的,有時候一個簡單的問題卡很久,但可能別人的一點撥就會恍然大悟,由衷的希望大家能夠共同進步。

      Linux Python Windows

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Sentinel落地與應用
      下一篇:Promise源碼解密-Promise A+標準
      相關文章
      亚洲精品视频在线看| 久久精品7亚洲午夜a| 中文字幕亚洲一区二区va在线| 亚洲精品美女视频| 综合亚洲伊人午夜网 | 亚洲精品视频在线| 亚洲乱码中文字幕手机在线 | 亚洲AV无码国产在丝袜线观看| 日韩成人精品日本亚洲| 亚洲午夜电影在线观看| 国产aⅴ无码专区亚洲av| 亚洲国产成人精品无码久久久久久综合| 亚洲综合校园春色| 久久亚洲精品人成综合网| 亚洲色WWW成人永久网址| 亚洲av中文无码| 亚洲国产日韩成人综合天堂| 亚洲精品综合久久| 亚洲欭美日韩颜射在线二| 亚洲精品白浆高清久久久久久| 亚洲国产精品第一区二区三区| 亚洲AV无码一区二三区| 国产精品亚洲mnbav网站 | 亚洲区精品久久一区二区三区| 亚洲成aⅴ人在线观看| 亚洲v高清理论电影| 亚洲精品视频在线观看免费| 亚洲精品无码久久毛片波多野吉衣| 亚洲电影在线免费观看| 亚洲一级毛片在线播放| 亚洲色图综合网站| 亚洲国产一区在线观看| 亚洲狠狠成人综合网| 91亚洲自偷在线观看国产馆| ass亚洲**毛茸茸pics| 亚洲欧美不卡高清在线| 亚洲最大的成人网| 国产亚洲福利在线视频| 亚洲av无码av在线播放| 亚洲精品天堂成人片AV在线播放| 亚洲国产成人资源在线软件|