python解析照片拍摄时间进行图片整理


Posted in Python onJuly 23, 2022

引言

手机中拍摄照的照片和视频快爆了,想转移到PC端,并按时间建立文件夹存储到电脑中,本文主要介绍如何通过python获取手机拍摄图片的时间信息并存储。

1. 获取图片拍摄时间

首先需要安装exifread库。通过EXIF(Exchangeable image file format: 可交换图像文件格式) 获取这些信息。

获取图片时间信息:

import exifread
with open(file_path, 'rb') as file_data:
    tags = exifread.process_file(file_data)
    tag_date = 'EXIF DateTimeOriginal'
    if tag_date in tags:
        file_rename =str(tags[tag_date]).replace(':','').replace(' ', '_') + os.path.splitext(filename)[1]
        new_path = os.path.join(root_dir, file_rename)
        os.rename(file_path, new_path)

通过以上代码即可获取拍摄时间,得到时间格式:2022:03:11 11:30:06

我们将文件重命名,方便后续管理。

2. 获取视频拍摄时间

获取视频拍摄时间信息:

format = '%Y%m%d_%H%M%S'
    file_path = os.path.join(root_dir, filename)
    statinfo = os.stat(file_path)
    temp_time = time.localtime(statinfo.st_mtime)
    file_rename = str(time.strftime(format, temp_time)) + os.path.splitext(filename)[1]
    new_path = os.path.join(root_dir, file_rename)
    os.rename(file_path, new_path)

同样我们将文件 重命名,方便后续管理。

3. 根据图片时间建立文件夹

通过以上操作,照片和视频文件我们都以时间格式进行命名。接下来我们根据时间建立文件夹整理。

time_info =  os.path.splitext(filename)[0].split("_")[0]
dst_dir = save_dir + time_info
if not os.path.exists(dst_dir):
    os.mkdir(dst_dir)
src_path = os.path.join(root_dir, filename)
save_path = os.path.join(dst_dir, filename)
shutil.move(src_path, save_path)

完整代码

import os
import re
import time
import shutil
import exifread
def rename_pic(root_dir, filename):
    file_path = os.path.join(root_dir, filename)
    try :
        with open(file_path, 'rb') as file_data:
            tags = exifread.process_file(file_data)
            tag_date = 'EXIF DateTimeOriginal'
            if tag_date in tags:
                file_rename = str(tags[tag_date]).replace(':', '').replace(' ', '_') + os.path.splitext(filename)[1]
                new_path = os.path.join(root_dir, file_rename)
                print(file_path,new_path)
                os.rename(file_path, new_path)
            else:
                print('No {} found'.format(tag_date), ' in: ', file_path)
    except Exception as e:
        print("error ", e)
def rename_video(root_dir, filename):
    format = '%Y%m%d_%H%M%S'
    file_path = os.path.join(root_dir, filename)
    statinfo = os.stat(file_path)
    temp_time = time.localtime(statinfo.st_mtime)
    file_rename = str(time.strftime(format, temp_time)) + os.path.splitext(filename)[1]
    new_path = os.path.join(root_dir, file_rename)
    os.rename(file_path, new_path)
def rename(root_dir):
    img_reg = r'(\.JPG|\.PNG|\.jpg|\.png)'
    video_reg = r'(\.mp4|\.MP4|\.MOV)'
    for filename in os.listdir(root_dir):
        file_path = os.path.join(root_dir, filename)
        if os.path.isfile(file_path):
            if re.search(img_reg, filename):
                rename_pic(root_dir, filename)
            elif re.search(video_reg, filename):
                rename_video(root_dir, filename)
def save_files(root_dir, save_dir):
    for filename in os.listdir(root_dir):
        try:
            time_info =  os.path.splitext(filename)[0].split("_")[0]
            dst_dir = save_dir + time_info
            if not os.path.exists(dst_dir):
                os.mkdir(dst_dir)
            src_path = os.path.join(root_dir, filename)
            save_path = os.path.join(dst_dir, filename)
            print(src_path, save_path)
            shutil.move(src_path, save_path)
        except Exception as e:
            print("error ", e)
if __name__ == '__main__':
    root_dir = "/Users/xxx/pics"
    save_dir = "/Users/xxx/Downloads/"
    rename(root_dir)
    save_files(root_dir, save_dir)

以上就是python解析照片拍摄时间进行图片整理的详细内容,更多关于python解析拍摄时间的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中使用OpenCV进行人脸检测的例子
Apr 18 Python
python采集博客中上传的QQ截图文件
Jul 18 Python
跟老齐学Python之模块的加载
Oct 24 Python
python异常和文件处理机制详解
Jul 19 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
python 瀑布线指标编写实例
Jun 03 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 23 #Python
Python 避免字典和元组的多重嵌套问题
Jul 15 #Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 #Python
Python实现聚类K-means算法详解
Jul 15 #Python
python自动获取微信公众号最新文章的实现代码
Jul 15 #Python
pytorch实现加载保存查看checkpoint文件
Jul 15 #Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 #Python
You might like
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
Python中过滤字符串列表的方法
2020/12/22 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
捷科时代的软件测试笔试题
2015/11/09 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
生物制药毕业生自荐信
2013/10/16 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
大学生见习报告范文
2014/11/03 职场文书
幼儿园教师求职信
2015/03/20 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
Java线程的6种状态与生命周期
2022/05/11 Java/Android