Python: Arrange images in to folder by date

20 06 2012

20120620

ผมเป็นคนนึงที่เวลาถ่ายรูปแล้วไม่ได้ใช้โปรแกรมที่มากับกล้องหรือโปรแกรมจัดการภาพอื่นๆ ในการจัดการกับภาพที่ถ่ายมา สิ่งที่ทำก็คือถอดการ์ดความจำจากกล้องมาใส่เครื่องแล้วก็เลือกเรียงรูปตามวันเดือนปี ห้อยท้ายด้วยกิจกรรม

ตอนนี้กิจกรรมที่ว่าส่วนมากก็ถ่ายรูปน้องบุ้งกี๋ ถ่ายไปเรื่อยๆ เพราะหน่วยความจำพอเพียงพอจะมาเรียงตามวันที่ก็เสียเวลาในการเลือกวัน สร้างโฟล์ดเดอร์ ย้ายรูปมาลงโฟล์ดเดอร์ ก็เลยเขียนสคริปจัดการส่วนนี้ด้วยภาษาไพธอน

ได้ออกมาดังนี้

#-------------------------------------------------------------------------------
# Name: ArrangeImageFile4BK
# Purpose: Arrange jpg image file in to folder by date
#
# Author: Enu
#
# Created: 20/06/2012
# Copyright: (c) Enu 2012
# Licence: CopyLeft
#-------------------------------------------------------------------------------
import os, os.path, sys
import datetime, shutil
def listOnlyFile(directory,filetype):
 lowerType = filetype.lower()
 upperType = filetype.upper()
 fileList=[]
 for root, dirs, files in os.walk(directory):
 for name in files:
 if name[-3:] == lowerType or name[-3:]== upperType:
 filename = os.path.join(root, name)
 fileList.append(filename)
 return fileList

def ensure_dir(folderPath):
 if not os.path.exists(folderPath):
 os.makedirs(folderPath)

def arrangeImage(fileList,targetFolder):
 for image in fileList:
 createTime = os.path.getmtime(image)
 d = datetime.datetime.fromtimestamp(createTime)
 if d.month<10: month = "0"+str(d.month)
 else: month = str(d.month)
 if d.day<10: day = "0"+str(d.day)
 else: day = str(d.day)
 strDate = str(d.year)+ month + day +"_BK"
 folderPath = os.path.join(targetFolder,strDate)
 ensure_dir(folderPath)
 #print folderPath
 shutil.move(image,folderPath)
 print "move " + image
print "finish"

#=========================================================
#================ Start Main script =============================
#=========================================================
if __name__ == '__main__':
 def Usage():
 print ' '
 print ' :::Arrange BK image to folder by Date:::'
 print 'Usage: ArrangeImageFile4BK.py [sourceFolder] [targetFolder]'
 print ' '
 print ' -only jpg file format'
 print ' -copy to YYYYMMDD_BK folder'
 print ' '
 argv = sys.argv
 if len(argv) != 3:
 Usage()
 sys.exit(1)
 else:
 sourceFolder = argv[1]
 targetFolder = argv[2]
 print "sourceFolder: ",sourceFolder
 print "targetFolder: ",targetFolder
 drive = sourceFolder
 fileList = listOnlyFile(drive,"JPG")
 arrangeImage(fileList,targetFolder)

โดยโฟล์ดเดอร์ที่สร้างขึ้นจะใช้ชื่อ ปีเดือนวันตามด้วย _BK ใครอยากเปลี่ยนเป็นอย่างอื่น หรือเอาออกก็ตามสะดวก
รูปที่อยู่วันเดือนปีเดียวกัน ก็จะถูกย้ายเข้าโฟล์ดเดอร์ เท่านี้ก็เรียบร้อยประหยัดเวลาดี

วิธีการเรียกใช้ก็เรียกผ่า่น command prompt ของวินโดว์เช่นบันทึกไว้ในชื่อ ArrangeImageFile4BK.py ก็สั่ง
>> ArrangeImageFile4BK.py SourceFolder TargetFolder
โดย

SourceFolder คือโฟล์ดเดอร์ที่มีภาพ jpg อยู่
TargetFolder คือโฟล์ดเดอร์ที่ต้องการเก็บข้อมูลภาพที่จัดการแล้ว


Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: