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简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
Python读取properties配置文件操作示例
Mar 29 Python
python中的decorator的作用详解
Jul 26 Python
python 保存float类型的小数的位数方法
Oct 17 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
python3 实现调用串口功能
Dec 26 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
python实现自动清理重复文件
Aug 24 Python
如何理解及使用Python闭包
Jun 01 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 for 循环语句使用方法详细说明
2010/05/09 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
Prototype String对象 学习
2009/07/19 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
js实现下一页页码效果
2017/03/07 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Django中URL的参数传递的实现
2019/08/04 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
QML用PathView实现轮播图
2020/06/03 Python
python3处理word文档实例分析
2020/12/01 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
公司培训心得体会
2014/01/03 职场文书
关于环保的建议书
2014/05/12 职场文书
开学典礼演讲稿
2014/05/23 职场文书
银行稽核岗位职责
2015/04/13 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
一文搞懂php的垃圾回收机制
2021/06/18 PHP