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使用calendar输出指定年份全年日历的方法
Apr 04 Python
python中requests模块的使用方法
Apr 08 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
python3使用smtplib实现发送邮件功能
May 22 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
python3.8下载及安装步骤详解
Jan 15 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Python 下载Bing壁纸的示例
Sep 29 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
python如何在word中存储本地图片
Apr 07 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
使用python绘制横竖条形图
Apr 21 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开发工具之vs2005图解
2008/01/12 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python检测服务器是否正常
2014/02/16 Python
在Python中进行自动化单元测试的教程
2015/04/15 Python
python实现在windows下操作word的方法
2015/04/28 Python
Python列表切片操作实例总结
2019/02/19 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
单位办理社保介绍信
2014/01/10 职场文书
元旦晚会主持词
2014/03/24 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
仙境之桥观后感
2015/06/16 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL