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实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Django框架中方法的访问和查找
Jul 15 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
Python 音频生成器的实现示例
Dec 24 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
Python实现扫码工具的示例代码
Oct 09 Python
详解python的变量缓存机制
Jan 24 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程序
2009/03/09 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
初识Laravel
2014/10/30 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
django的登录注册系统的示例代码
2018/05/14 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python基础之文件读取的讲解
2019/02/16 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
自荐信模版
2013/10/24 职场文书
电子技术专业中专生的自我评价
2013/12/17 职场文书
求职信怎么写
2014/05/23 职场文书
主要领导对照检查材料
2014/08/26 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers