使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類(lèi)的操作指南

各位小伙伴們,別看這些張張圖片,它們也是有生日的哦!而今天,我們就要教你一招,讓Python幫助圖片自動(dòng)按照日期分類(lèi),讓這些鏡頭下的瞬間肆意自由,分門(mén)別類(lèi)、慢慢成長(zhǎng)!
準(zhǔn)備工作
首先,需要攜帶一顆善良而充滿(mǎn)創(chuàng)意的心,以及一顆熱愛(ài)技術(shù)的腦袋。另外,Python的os模塊、PIL庫(kù)(Python Imaging Library)、以及exifread庫(kù)也會(huì)是我們這次冒險(xiǎn)的得力工具!
沒(méi)有安裝PIL和exifread庫(kù)的,記得先安裝一下哦:
pip install exifread pip install Pillow
代碼實(shí)現(xiàn)
from PIL import Image
import os
import exifread
from datetime import datetime
def get_image_date_taken(image_path):
with open(image_path, 'rb') as image_file:
tags = exifread.process_file(image_file)
date_taken = tags.get('EXIF DateTimeOriginal')
if date_taken:
return datetime.strptime(str(date_taken), '%Y:%m:%d %H:%M:%S')
else:
return None
def classify_images_by_date(input_folder, output_folder):
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
input_path = os.path.join(input_folder, filename)
if os.path.isfile(input_path):
date_taken = get_image_date_taken(input_path)
if date_taken:
date_folder = date_taken.strftime('%Y-%m-%d')
date_folder_path = os.path.join(output_folder, date_folder)
os.makedirs(date_folder_path, exist_ok=True)
output_path = os.path.join(date_folder_path, filename)
os.replace(input_path, output_path)
# 測(cè)試
classify_images_by_date(
'C:/Users/olive/Desktop/待分類(lèi)的圖片',
'C:/Users/olive/Desktop/分類(lèi)后的圖片')代碼解析
這段代碼不僅涉及到PIL庫(kù)的應(yīng)用、文件處理,更使用了exifread庫(kù)來(lái)獲取圖片的拍攝日期信息。Python就好像是一位時(shí)間旅行者,為圖片鐫刻上屬于它們自己的生日!
現(xiàn)在讓我來(lái)詳細(xì)解析一下:
1.首先,定義了一個(gè)名為get_image_date_taken的函數(shù),用于獲取圖片的拍攝日期。它通過(guò)讀取圖片的exif信息(EXIF是存儲(chǔ)在數(shù)碼照片文件中的附加信息,包括拍攝日期等),獲取圖片的拍攝日期,并返回一個(gè)datetime對(duì)象。
2.然后,定義了一個(gè)名為classify_images_by_date的函數(shù),用于分類(lèi)圖片并保存到對(duì)應(yīng)日期的文件夾中。該函數(shù)接收兩個(gè)參數(shù):input_folder表示輸入圖片存放的文件夾路徑,output_folder表示分類(lèi)后圖片保存的文件夾路徑。
3.在classify_images_by_date函數(shù)中,首先使用os.makedirs(output_folder,exist_ok=True)創(chuàng)建輸出文件夾,如果文件夾已存在則不會(huì)報(bào)錯(cuò)。
4.然后,遍歷輸入文件夾中的每張圖片。對(duì)于每張圖片,獲取圖片的完整路徑input_path,并進(jìn)行判斷是否為文件。
5.如果是文件,則調(diào)用get_image_date_taken函數(shù)獲取圖片的拍攝日期date_taken。如果成功獲取到日期,就根據(jù)日期創(chuàng)建對(duì)應(yīng)的文件夾,并將圖片移動(dòng)到該文件夾中。
6.最后,利用os.replace方法將圖片從原路徑移動(dòng)到新的分類(lèi)路徑,并完成分類(lèi)操作。
激動(dòng)人心的測(cè)試
跟著小編的腳步,將你的圖片帶入時(shí)間的長(zhǎng)河吧!只需要將輸入文件夾路徑和輸出文件夾路徑傳入classify_images_by_date函數(shù),Python就能為你將圖片按照日期自動(dòng)分類(lèi),慢慢成長(zhǎng)。
接下來(lái),我們要開(kāi)始測(cè)試代碼了,首先,我們準(zhǔn)備一些圖片,放在一個(gè)文件夾下:

我們會(huì)發(fā)現(xiàn),前面3張不是我們自己拍的照片(濫竽充數(shù)的,看看能不能蒙混過(guò)關(guān)??),后面的照片,文件名也是有點(diǎn)亂,甚至有些都看不出是什么時(shí)候拍的。
這里再多啰嗦兩句,我們深究一下圖片的日期究竟是被記錄在了哪里:
我們隨便選擇一張照片,對(duì)它右擊,選擇屬性,就跳出了如下所示的一個(gè)彈框。然后,我們點(diǎn)詳細(xì)信息這個(gè)選項(xiàng)卡,然后在屬性中,找到來(lái)源下的拍攝日期,它的值,就是我們實(shí)際拍攝照片的時(shí)間。

我們?cè)倏匆幌?,不是我們自己拍攝的照片,有沒(méi)有日期呢:

我們看到,這張圖片的拍攝日期是空白的。
好了,接下來(lái)要執(zhí)行我們的代碼了,激動(dòng)人心的時(shí)刻終于來(lái)了。
首先,還是要改一下測(cè)試的那行代碼,再上面的代碼中的最后一行:
# 測(cè)試
classify_images_by_date(
'C:/Users/olive/Desktop/待分類(lèi)的圖片',
'C:/Users/olive/Desktop/分類(lèi)后的圖片')注意,兩個(gè)文件夾的路徑要改成你自己的哦!
好了,接下來(lái)就運(yùn)行一下吧。
很快,幾乎沒(méi)有等待,瞬間完成!
我們看到,此時(shí)在我們的桌面上就多了一個(gè)【分類(lèi)后的圖片】的文件夾:

非常棒,果然出現(xiàn)了按日期歸類(lèi)的文件夾,我們點(diǎn)開(kāi)看一下,照片是不是歸類(lèi)進(jìn)來(lái)了:

ok,歸類(lèi)成功!
最后,我們?cè)倏聪隆敬诸?lèi)的圖片】的那個(gè)文件夾:

果然,不是我們拍的照片,呆在原地了,在我們機(jī)智的Python面前,所有的妖精無(wú)處遁形,哈哈!
結(jié)語(yǔ)
這篇文章讓我們一起見(jiàn)證了圖片的成長(zhǎng),讓這些瞬間在時(shí)間的長(zhǎng)河里慢慢自由生長(zhǎng)、分門(mén)別類(lèi)。希望這個(gè)教程能為你的圖片分類(lèi)之旅增添一絲樂(lè)趣和意義!
在未來(lái)的某一天,你回過(guò)頭來(lái),會(huì)發(fā)現(xiàn)這些個(gè)個(gè)鏡頭下的瞬間,其實(shí)也在悄悄地留下了生日。
到此這篇關(guān)于使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類(lèi)的操作指南的文章就介紹到這了,更多相關(guān)Python照片按日期自動(dòng)分類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何用Python進(jìn)行回歸分析與相關(guān)分析
這篇文章主要介紹了如何用Python進(jìn)行回歸分析與相關(guān)分析,這兩部分內(nèi)容會(huì)放在一起講解,文中提供了解決思路以及部分實(shí)現(xiàn)代碼,需要的朋友可以參考下2023-03-03
一張圖帶我們?nèi)腴T(mén)Python基礎(chǔ)教程
啄木鳥(niǎo)社區(qū)上原始翻譯后繪制的,最早這個(gè)圖是出現(xiàn)在,這個(gè)圖太棒了,有編程基礎(chǔ)的人一下子就了解 Python 的用法了。真正的 30 分鐘上手,需要的朋友可以參考下2017-02-02
pytorch查看通道數(shù) 維數(shù) 尺寸大小方式
這篇文章主要介紹了pytorch查看通道數(shù) 維數(shù) 尺寸大小方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
用pycharm開(kāi)發(fā)django項(xiàng)目示例代碼
這篇文章主要介紹了用pycharm開(kāi)發(fā)django項(xiàng)目示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
基于Pytorch的神經(jīng)網(wǎng)絡(luò)之Regression的實(shí)現(xiàn)
本文主要介紹了基于Pytorch的神經(jīng)網(wǎng)絡(luò)之Regression的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Python利用cv2動(dòng)態(tài)繪制圓和矩形的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python如何利用cv2實(shí)現(xiàn)動(dòng)態(tài)繪制圓和矩形的功能,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下2023-03-03

