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进行TCP网络编程的教程
Apr 29 Python
Python中title()方法的使用简介
May 20 Python
Python搜索引擎实现原理和方法
Nov 27 Python
python实现壁纸批量下载代码实例
Jan 25 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
Python批量发送post请求的实现代码
May 05 Python
Python类中self参数用法详解
Feb 13 Python
django 将自带的数据库sqlite3改成mysql实例
Jul 09 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
python opencv肤色检测的实现示例
Dec 21 Python
Spy++的使用方法及下载教程
Jan 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
php5 and xml示例
2006/11/22 PHP
php修改时间格式的代码
2011/05/29 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
JSON取值前判断
2014/12/23 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
jQuery实现日历效果
2020/09/11 jQuery
构建一个JavaScript插件系统
2020/10/20 Javascript
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
python实现简单的文字识别
2018/11/27 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
python3实现微型的web服务器
2019/09/03 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
python搜索算法原理及实例讲解
2020/11/18 Python
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
为什么需要版本控制
2016/10/28 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
精彩自我鉴定
2014/01/16 职场文书
教师产假请假条
2014/04/10 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
营业员岗位职责范本
2015/04/14 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
浅谈mysql执行过程以及顺序
2021/05/12 MySQL