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构造函数及解构函数介绍
Feb 26 Python
python实现网站的模拟登录
Jan 04 Python
利用Python如何生成hash值示例详解
Dec 20 Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
python连接mongodb集群方法详解
Feb 13 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 Python
浅析Python面向对象编程
Jul 10 Python
python 将html转换为pdf的几种方法
Dec 29 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
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php获取淘宝分类id示例
2014/01/16 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
python+django加载静态网页模板解析
2017/12/12 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
英国名牌男装店:Standout
2021/02/17 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
大学生秋游活动方案
2014/02/17 职场文书
开业庆典策划方案
2014/02/18 职场文书
志愿者宣传口号
2014/06/17 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
重温入党誓词主持词
2015/06/29 职场文书
2015年教师国培感言
2015/08/01 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
区域销售大会开幕词
2016/03/04 职场文书
php引用传递
2021/04/01 PHP
总结Pyinstaller打包的高级用法
2021/06/28 Python
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
基于PyQt5制作一个群发邮件工具
2022/04/08 Python