python应用之 重命名照片+照片归类

Posted liu-xiaoliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python应用之 重命名照片+照片归类相关的知识,希望对你有一定的参考价值。

需要使用exifread库,获取照片的exif信息,来实现操作;

一、重命名照片的代码如下,可以实现将照片添加拍摄日期进行重命名操作:

import os
import exifread

#将路径下的图片,重命名为带日期的文件
def getExif(path):
    for root,dirs,files in os.walk(path,True):
        for file in files:
            old_full_file_name = os.path.join(path, file)
            FIELD = EXIF DateTimeOriginal
            fd = open(old_full_file_name, rb)
            tags = exifread.process_file(fd)
            fd.close()
            if FIELD in tags:
                new_name = str(tags[FIELD]).replace(:, ‘‘)[:8]+ _ + file
                new_full_file_name = os.path.join(path, new_name)
                tot = 1
                while os.path.exists(new_full_file_name):
                    new_full_file_name = os.path.splitext(new_full_file_name)[0] +_ + str(tot) +os.path.splitext(file)[1]
                    tot += 1
                print(old_full_file_name, " ---> ", new_full_file_name)
                os.rename(old_full_file_name, new_full_file_name)
            else:
                print(No {} found.format(FIELD),  in: , old_full_file_name)

#调用函数
getExif(E:/test)

 

二、将照片按照 年份月份 进行归类保存的实现代码:

import os
import exifread

#获取文件的时间
def getdate(filename):
    #以二进制方式,打开指定的文件
    f=open(filename,rb)
    #调用exifread来获取图片文件的exif信息
    data=exifread.process_file(f)
    if data:
        #如果获取到data值,则进行下述相关操作
        try:
            #获取EXIF DateTimeOriginal值,即为图片的创建时间
            t=data[EXIF DateTimeOriginal]
            print(t)
            #将获取到的时间进行格式转换,并仅保留年份和月份,然后返回
            return str(t).replace(":",".")[:7]
        except:
            pass
    #如果,未获取到图片的exif信息,则调用os.stat获取文件的系统信息
    state=os.stat(filename)
    #将文件的修改时间格式化,并返回
    return time.strftime("%Y.%m",time.localtime(state[-2]))

#照片分类整理函数
def classifyPictures(path):
    #利用os.walk获取目录下的文件夹和文件的名称及其目录路径
    for root,dirs,files in os.walk(path,True):
        for filename in files:
            #获取文件的完整路径
            file=os.path.join(root,filename)
            #获取文件的后缀名f
            p,f=os.path.splitext(file)
            if f.lower() not in (.jpg,.png,.mp4):
                continue
            try:
                t=getdate(file)
            except Exception as e:
                print(e)
                continue
            moveDir=root+/+t
            mf=moveDir+/+filename
            if not os.path.exists(moveDir):
                os.mkdir(moveDir)
            #复制文件
            shutil.copy2(file,mf)
            #文件复制后,删除文件
            os.remove(file)

#调用函数
classifyPictures(E:/movePictures)

 

注:此文参考文章

1、http://lanbing510.info/2015/09/21/ClassifyPictures.html

2、https://blog.csdn.net/LiJiancheng0614/article/details/45819873

以上是关于python应用之 重命名照片+照片归类的主要内容,如果未能解决你的问题,请参考以下文章

怎么给手机照片重命名

手机照片怎么重命名

照片重命名怎么弄

如何以照片的拍摄时间批量重命名文件

bat脚本照片复制重命名?

iOS 重命名/删除相册