好用的副檔名分類小程式|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
拾憶路上
12會員
26內容數
隨筆是我內心的聲音,隨影是我眼中的記憶。或許,在這個不斷流轉的人生中,它們是我最真實的見證和表達方式。
拾憶路上的其他內容
2024/11/28
選定好發行版後終於進入安裝的階段了!Linux安裝說簡單也很簡單,但也有複雜的安裝方式。從一開始學習Linux可以從虛擬機器(Virtual Machine)下手,讓你可以在不破壞現有系統的情況下體驗Linux。 接下來會安裝Ubuntu Server來作為學習Linux的第一步。
Thumbnail
2024/11/28
選定好發行版後終於進入安裝的階段了!Linux安裝說簡單也很簡單,但也有複雜的安裝方式。從一開始學習Linux可以從虛擬機器(Virtual Machine)下手,讓你可以在不破壞現有系統的情況下體驗Linux。 接下來會安裝Ubuntu Server來作為學習Linux的第一步。
Thumbnail
2024/11/14
當你打開瀏覽器,迫不及待開始搜尋「Linux」想要進入開源的世界,結果!數不清的發行版本不斷冒出來,瞬間讓你感到腦袋爆炸,馬上就想要把視窗關掉,心想還是乖乖的繼續用Windows好了......。 等等,這篇文章會帶你簡單了解一些主流 Linux 發行版,以及它們的特色,讓你在選擇時不會崩潰。
Thumbnail
2024/11/14
當你打開瀏覽器,迫不及待開始搜尋「Linux」想要進入開源的世界,結果!數不清的發行版本不斷冒出來,瞬間讓你感到腦袋爆炸,馬上就想要把視窗關掉,心想還是乖乖的繼續用Windows好了......。 等等,這篇文章會帶你簡單了解一些主流 Linux 發行版,以及它們的特色,讓你在選擇時不會崩潰。
Thumbnail
2024/11/07
這篇文章將探討Linux的特性、優勢與劣勢以及到底甚麼是Linux。還會與其他主流作業系統進行比較,希望讓大家了解這個極具魅力的作業系統(笑。
Thumbnail
2024/11/07
這篇文章將探討Linux的特性、優勢與劣勢以及到底甚麼是Linux。還會與其他主流作業系統進行比較,希望讓大家了解這個極具魅力的作業系統(笑。
Thumbnail
看更多
你可能也想看
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
攝影作品的排序方法對於展示、出版造成重要影響,本篇分享了五種排序分類,包括故事發展排序、圖像學排序、詩一樣排序、拍攝時間排序和檔案排序。這些排序方式針對不同的作品和用途,提供了不同的展示方式和意義。
Thumbnail
攝影作品的排序方法對於展示、出版造成重要影響,本篇分享了五種排序分類,包括故事發展排序、圖像學排序、詩一樣排序、拍攝時間排序和檔案排序。這些排序方式針對不同的作品和用途,提供了不同的展示方式和意義。
Thumbnail
感謝꒰ 𝗩𝗼𝗹𝗰𝗮𝗻𝗼 𝗦𝘁𝘂𝗱𝗶𝗼 韓式自助寫真 ꒱的邀請~ 我是一個不喜歡拍照的人,面對鏡頭總是尷尬癌上身,拍不出滿意的照片,又不好意思麻煩攝影師或朋友一直重拍~ 如果你也有這種困擾,非常推薦來 𝗩𝗼𝗹𝗰𝗮𝗻𝗼 𝗦𝘁𝘂𝗱𝗶𝗼 韓式自
Thumbnail
感謝꒰ 𝗩𝗼𝗹𝗰𝗮𝗻𝗼 𝗦𝘁𝘂𝗱𝗶𝗼 韓式自助寫真 ꒱的邀請~ 我是一個不喜歡拍照的人,面對鏡頭總是尷尬癌上身,拍不出滿意的照片,又不好意思麻煩攝影師或朋友一直重拍~ 如果你也有這種困擾,非常推薦來 𝗩𝗼𝗹𝗰𝗮𝗻𝗼 𝗦𝘁𝘂𝗱𝗶𝗼 韓式自
Thumbnail
最近AI的産圖越來越多,是時候開始整理了,隨機生成的廢圖基本上都清除了,剩下一堆感覺不差的挑一挑,只是數量有點多。
Thumbnail
最近AI的産圖越來越多,是時候開始整理了,隨機生成的廢圖基本上都清除了,剩下一堆感覺不差的挑一挑,只是數量有點多。
Thumbnail
在這篇文章中,我們將分享拍攝過程中的主視覺,以及拍攝過程中的靈感和挑戰。同時,我們將介紹徵件的詳細資訊和期限。期待大家的參與和精彩作品的展出。
Thumbnail
在這篇文章中,我們將分享拍攝過程中的主視覺,以及拍攝過程中的靈感和挑戰。同時,我們將介紹徵件的詳細資訊和期限。期待大家的參與和精彩作品的展出。
Thumbnail
找到喜歡的事物,拍出喜歡的感覺
Thumbnail
找到喜歡的事物,拍出喜歡的感覺
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
不知道已經有多久沒有將相片拿在手上觀看了。 隨著數位相機的發展,照片自然而然也從紙張變成從數位裝置上觀看。 但偶爾還是會有想將相片列印出來的衝動,尤其是拍到一張非常喜歡的照片時。 除了傳統的相館,現在連便利商店也可以印照片, 但對想隨時將手機裡的照片,或者偶爾想從相機拍的照片中列印幾張出
Thumbnail
不知道已經有多久沒有將相片拿在手上觀看了。 隨著數位相機的發展,照片自然而然也從紙張變成從數位裝置上觀看。 但偶爾還是會有想將相片列印出來的衝動,尤其是拍到一張非常喜歡的照片時。 除了傳統的相館,現在連便利商店也可以印照片, 但對想隨時將手機裡的照片,或者偶爾想從相機拍的照片中列印幾張出
Thumbnail
拍照後,請把照片原檔用雲端硬碟或相簿,分享超連結給我 拍照請用手機內建軟體拍,不要用社群媒體的(例如FB、Line) 因為FB會把畫質壓縮的變形,像縮圖一樣,手機上看可以,但桌機大螢幕看,就有朦朧美(會影響判讀),更遑論如果需要印出來了(例如媽媽手冊等證明文件)。
Thumbnail
拍照後,請把照片原檔用雲端硬碟或相簿,分享超連結給我 拍照請用手機內建軟體拍,不要用社群媒體的(例如FB、Line) 因為FB會把畫質壓縮的變形,像縮圖一樣,手機上看可以,但桌機大螢幕看,就有朦朧美(會影響判讀),更遑論如果需要印出來了(例如媽媽手冊等證明文件)。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News