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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
详解Python的Django框架中的templates设置
May 11 Python
详解Python3中的Sequence type的使用
Aug 01 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
python实现数据图表
Jul 29 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
jupyter notebook 多行输出实例
Apr 09 Python
编写python代码实现简单抽奖器
Oct 20 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 Python
用Python将库打包发布到pypi
Apr 13 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 数组的指针操作实现代码
2011/02/08 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
django数据库自动重连的方法实例
2019/07/21 Python
Python中and和or如何使用
2020/05/28 Python
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
师范应届毕业生自荐信
2013/11/18 职场文书
房地产项目策划书
2014/02/05 职场文书
大学生党员自我批评
2014/02/14 职场文书
实习公司领导推荐函
2014/05/21 职场文书
少先队活动总结
2014/08/29 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
Python基础之进程详解
2021/05/21 Python
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
Python各协议下socket黏包问题原理
2022/04/12 Python
如何使用python包中的sched事件调度器
2022/04/30 Python