好用的副檔名分類小程式|Python

閱讀時間約 7 分鐘
包容一切的海洋

包容一切的海洋


自從拿到相機後一直有個困擾,每次出門拍了很多照片,回來後除了初步挑選照片,將拍壞的照片刪除之外,再來就是將照片依照自己想要的方式歸檔。

平時拍照我都是拍攝RAW+JPG兩種格式的檔案,而相機拍攝完成存入記憶卡都是將這兩種格式放在同一個資料夾,回來後初步挑選完照片還要先分類出RAW檔與JPG檔,接著按照個人習慣年、月、日來分類照片......,每次回來的分類就要做一大堆步驟,有一天突然想著要是電腦可以自動幫我完成就好了,於是這隻小程式就誕生了。

我說的分類格式大概就像是下面這種檔案結構:

D:\Photo>tree /F
D:.
├─2022
└─2023
├─07
│ └─23
│ ├─jpg
│ │ 123.JPG
│ │
│ └─raf
222.raf
└─09
├─16
│ ├─jpg
│ │ 1.JPG
│ │ 2.JPG
│ │
│ └─raf
1.RAF
2.RAF

└─24
├─jpg
20230924.JPG

└─raf
20230924.RAF

這樣以後要找照片就會很方便,整整齊齊看的也開心,但是如果是手動的話,要新增好多個資料夾,最後還得自己移動照片到對應資料夾,實在太花時間了。所以才想說做個簡單的小程式來幫我處理這些動作,接著就稍微講解一下。

首先,導入我們需要的模組:

import os 
import shutil
from pathlib import Path
from datetime import datetime
from tkinter import filedialog

都是一些Python本來就內建的模組,不需要額外安裝。os用來抓取檔案最後修改時間的timestamp,就是依據這個來建立年月日階層資料夾;shutil進行檔案的移動;pathlib來操作路徑;利用datetimefromtimestamp函數來將os所抓取到的最後修改時間的timestamp轉換成日期物件;最後導入tkinterfiledialog函數來讓我們可以選擇指定的資料夾。

導入完模組後,接著讓我們寫一個移動檔案的函數:

# 將文件按照修改日期分類並移動到目標資料夾的函數
def categorize_files(file_list, dest_folder, file_extension):
    count = 0
    for file in file_list:
        modification_time = datetime.fromtimestamp(os.path.getmtime(file))
        year = modification_time.year
        month = modification_time.month
        day = modification_time.day

        # 創建目標資料夾的路徑,按照年月日層級
        file_path = dest_folder / str(year) / str(month).zfill(2) / str(day).zfill(2) / file_extension

        if not file_path.exists():
            file_path.mkdir(parents=True)

        # 移動文件到目標路徑
        shutil.move(file, file_path / file.name)
        count += 1

    return count

接下來這段就是我們的主要函數啦,

def main(source_dir, target_dir, extensions):
    dir1, dir2 = source_dir, target_dir

    if not dir1 or not dir2 or not extensions:
        print("請指定來源資料夾、目標資料夾和至少一個副檔名。")
        return

    # 遍歷選定的副檔名列表
    for ext in extensions:
        file_extension = ext.lower()
        path1, path2 = Path(dir1), Path(dir2)

        # 獲取來源資料夾中符合副檔名的文件列表
        file_list = list(path1.glob(f'*.{file_extension}'))

        if not file_list:
            print(f"未找到{file_extension}格式的文件,請重新輸入正確的選擇。")
            continue

        # 調用categorize_files函數,將文件按照修改日期分類並移動到目標資料夾
        count = categorize_files(file_list, path2, file_extension)
        print(f"完成!!一共有 {count}{file_extension}格式的文件被移動")

if __name__ == "__main__":
    source_dir = filedialog.askdirectory(title="選擇來源資料夾")
    target_dir = filedialog.askdirectory(title="選擇目標資料夾")
    extensions = input("請輸入要移動的副檔名,用空格分隔:").split()
    main(source_dir, target_dir, extensions)

執行的時候就會跳出要請我們選擇資料夾的畫面,只要選擇需要分類的資料夾,與想移動到的資料夾以及輸入想移動的附檔名,程式就會自動按照檔案的最後修改日期來進行年月日階層的建立資料夾與移動檔案,並在最後告訴你總共有幾個檔案被移動,是不是很方便!

後續我也利用了tkinter建出一個簡單的GUI介面方便使用,相比上面那段程式,也不用自己打副檔名了,滑鼠點點就可以操作,也能夠新增或移除預設的副檔名!雖然樣貌有點陽春,但功能還是有的!

不知道為甚麼字糊糊的感覺...

不知道為甚麼字糊糊的感覺...

改天再來分享一下如何製作GUI出來。

avatar-img
10會員
25內容數
隨筆是我內心的聲音,隨影是我眼中的記憶。或許,在這個不斷流轉的人生中,它們是我最真實的見證和表達方式。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
隨筆,隨影 的其他內容
最近剛好在試著研究Python的虛擬環境,今天就來稍稍筆記一下。 在之前我其實也一直搞不懂這個,直到前陣子好好靜下心研究研究後有些心得。 在 Python 開發中,經常需要建立虛擬環境,來隔離不同專案所需的套件及依賴關係。這樣可以確保每個專案使用的套件版本都是一致的,避免可能的衝突和混淆。
自然圈農場,從幾年前露營興盛起來的時候就一直有聽過這個名字,我一直聽到人們超級推薦這個地方,每個人分享的照片也都很好看,看得我心癢癢的很想親自看看,無奈實在是太難訂了,後來也忘了這回事。
毫無計畫的一天,想說找個地方待著可以順道騎車吹吹風,這時候就慶幸平常有在收集口袋名單。翻了翻名單後,我鎖定了一間咖啡廳。
一個月前的某一天,平凡的日常中,在電視上看到一個露營節目,我隨口對著身旁一起看電視的老姊說了句:「要不要去試試看露營?」「喔好啊。」她竟然意外的答應了,不過心想她應該不會當真。
嘿!這週想分享一下我第一次的獨自旅行經驗。 老實說,在出發之前,我對於面對孤獨感和未知的旅程感到有些緊張,雖然平時我常常獨自一人到處走走,心裡想著不就是獨自出遊嗎?但這次的過夜旅程對我來說還是一個全新的挑戰。我之前總是告訴自己,只是一個人的旅行嘛,應該沒什麼大不了的。
最近剛好在試著研究Python的虛擬環境,今天就來稍稍筆記一下。 在之前我其實也一直搞不懂這個,直到前陣子好好靜下心研究研究後有些心得。 在 Python 開發中,經常需要建立虛擬環境,來隔離不同專案所需的套件及依賴關係。這樣可以確保每個專案使用的套件版本都是一致的,避免可能的衝突和混淆。
自然圈農場,從幾年前露營興盛起來的時候就一直有聽過這個名字,我一直聽到人們超級推薦這個地方,每個人分享的照片也都很好看,看得我心癢癢的很想親自看看,無奈實在是太難訂了,後來也忘了這回事。
毫無計畫的一天,想說找個地方待著可以順道騎車吹吹風,這時候就慶幸平常有在收集口袋名單。翻了翻名單後,我鎖定了一間咖啡廳。
一個月前的某一天,平凡的日常中,在電視上看到一個露營節目,我隨口對著身旁一起看電視的老姊說了句:「要不要去試試看露營?」「喔好啊。」她竟然意外的答應了,不過心想她應該不會當真。
嘿!這週想分享一下我第一次的獨自旅行經驗。 老實說,在出發之前,我對於面對孤獨感和未知的旅程感到有些緊張,雖然平時我常常獨自一人到處走走,心裡想著不就是獨自出遊嗎?但這次的過夜旅程對我來說還是一個全新的挑戰。我之前總是告訴自己,只是一個人的旅行嘛,應該沒什麼大不了的。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
​隨著季節氣候越來越熱,現在的節氣來到清明。也是吃冰與甜品好季節。對於愛吃各種美食小編來說,吃冰與甜品絕對是重點必吃項目。小編之前介紹過許多冰與甜品店家,這篇再來介紹這家和平豆花。 和平豆花相關資訊:: 地址: 宜蘭縣羅東鎮興東南路222號 (羅東本鋪) ​營業時間: PAM12:00–
這一切都是從「VVG Bistro」開始的。好樣 VVG 的執行長汪麗琴(Grace)從寢具、傢俱家飾跨域餐飲、好樣展店多元化的經營形態、策劃展覽,這些是怎麼辦到的呢?
Thumbnail
【創業好了沒】EP71 用技術帶動銷售,一次解決你的痛點&賣點。feat. 富群資訊 執行長 弘貞
Thumbnail
如果妳身邊有這樣的好男孩,不要錯過,要好好地把握他,因為錯過了,對他視而不見,有可能他就不會再出現了,再就算再出現也不再屬於妳了。
Thumbnail
自從拿到相機後一直有個困擾,每次出門拍了很多照片,回來後除了初步挑選照片,將拍壞的照片刪除之外,再來就是將照片依照自己想要的方式歸檔。
Thumbnail
「慢讀好食刻」精選116本「食」用美學,主要是由「全國公共圖書館巡迴展」所推出關於美味飲食、健康瘦身、AI農業應用、農產品銷售經濟相關好書書單,探討主題相當多元有趣,個人在一次圖書館取書日常時,剛好看到的好消息分享給大家!
Thumbnail
39歲以下的受訪者,有高達34.8%的人每個月薪水扣掉生活開銷後,幾乎歸零無法儲蓄,也就是所謂的月光族。決定你將來會變成富人或是窮人,其實是“你對金錢的態度”
Thumbnail
面對現代職場的快速變化,我們該如何培養一種以不變應萬變的能力?答案就是「學習力」。我有幸參加了一場名為「什麼都學得會!15個高效學習法則,快速上手新能力」的課程,由跨領域專家吳沛燊博士主講。在這堂課中,他分享了如何從不同角度切入,將學習方法落實到個人的職場和生活中。快來和我一起瞭解這堂課的精彩內容,
Thumbnail
在我們努力發掘自我天賦的同時,也許有些人會得到一些喪氣的結論 那就是,別人看起來永遠比自己更有能力、更有天分 每當努力回想的同時,只會發現自己一身的缺點及劣勢 如何看待身上的天賦優勢,也是一個重要課題
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
​隨著季節氣候越來越熱,現在的節氣來到清明。也是吃冰與甜品好季節。對於愛吃各種美食小編來說,吃冰與甜品絕對是重點必吃項目。小編之前介紹過許多冰與甜品店家,這篇再來介紹這家和平豆花。 和平豆花相關資訊:: 地址: 宜蘭縣羅東鎮興東南路222號 (羅東本鋪) ​營業時間: PAM12:00–
這一切都是從「VVG Bistro」開始的。好樣 VVG 的執行長汪麗琴(Grace)從寢具、傢俱家飾跨域餐飲、好樣展店多元化的經營形態、策劃展覽,這些是怎麼辦到的呢?
Thumbnail
【創業好了沒】EP71 用技術帶動銷售,一次解決你的痛點&賣點。feat. 富群資訊 執行長 弘貞
Thumbnail
如果妳身邊有這樣的好男孩,不要錯過,要好好地把握他,因為錯過了,對他視而不見,有可能他就不會再出現了,再就算再出現也不再屬於妳了。
Thumbnail
自從拿到相機後一直有個困擾,每次出門拍了很多照片,回來後除了初步挑選照片,將拍壞的照片刪除之外,再來就是將照片依照自己想要的方式歸檔。
Thumbnail
「慢讀好食刻」精選116本「食」用美學,主要是由「全國公共圖書館巡迴展」所推出關於美味飲食、健康瘦身、AI農業應用、農產品銷售經濟相關好書書單,探討主題相當多元有趣,個人在一次圖書館取書日常時,剛好看到的好消息分享給大家!
Thumbnail
39歲以下的受訪者,有高達34.8%的人每個月薪水扣掉生活開銷後,幾乎歸零無法儲蓄,也就是所謂的月光族。決定你將來會變成富人或是窮人,其實是“你對金錢的態度”
Thumbnail
面對現代職場的快速變化,我們該如何培養一種以不變應萬變的能力?答案就是「學習力」。我有幸參加了一場名為「什麼都學得會!15個高效學習法則,快速上手新能力」的課程,由跨領域專家吳沛燊博士主講。在這堂課中,他分享了如何從不同角度切入,將學習方法落實到個人的職場和生活中。快來和我一起瞭解這堂課的精彩內容,
Thumbnail
在我們努力發掘自我天賦的同時,也許有些人會得到一些喪氣的結論 那就是,別人看起來永遠比自己更有能力、更有天分 每當努力回想的同時,只會發現自己一身的缺點及劣勢 如何看待身上的天賦優勢,也是一個重要課題