6

按拍摄日期一键归类照片 Python

 3 years ago
source link: http://lanbing510.info/2015/09/21/ClassifyPictures.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

按拍摄日期一键归类照片 Python

2015年09月21日




手机里的照片好久没整理,最近提示没空间,自己一般都是按年月将照片保存,看到铺天盖地的照片,整个心都醉了。

于是写了下面这个脚本,一键归类所有的照片,按照拍摄日期归类到年月相应的文件夹。再也不用担心整理照片了!


# -*- coding: gbk -*-  

""" 
功能:对照片按照拍摄时间进行归类 
使用方法:将脚本和照片放于同一目录,双击运行脚本即可 
作者:冰蓝
"""  

import shutil  
import os  
import time  
import exifread  


class ReadFailException(Exception):  
    pass  

def getOriginalDate(filename):  
    try:  
        fd = open(filename, 'rb')  
    except:  
        raise ReadFailException, "unopen file[%s]\n" % filename  
    data = exifread.process_file( fd )  
    if data:  
        try:  
            t = data['EXIF DateTimeOriginal']  
            return str(t).replace(":",".")[:7]  
        except:  
            pass  
    state = os.stat(filename)  
    return time.strftime("%Y.%m", time.localtime(state[-2]))  


def classifyPictures(path):  
    for root,dirs,files in os.walk(path,True):  
        dirs[:] = []  
        for filename in files:  
            filename = os.path.join(root, filename)  
            f,e = os.path.splitext(filename)  
            if e.lower() not in ('.jpg','.png','.mp4'):  
                continue  
            info = "文件名: " + filename + " "  
            t=""  
            try:  
                t = getOriginalDate( filename )  
            except Exception,e:  
                print e  
                continue  
            info = info + "拍摄时间:" + t + " "  
            pwd = root +'\\'+ t  
            dst = pwd + '\\' + filename  
            if not os.path.exists(pwd ):  
                os.mkdir(pwd)  
            print info, dst  
            shutil.copy2( filename, dst )  
            os.remove( filename )  

if __name__ == "__main__":  
    path = "."  
    classifyPictures(path)  

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK