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中的实现
May 04 Python
python模块之re正则表达式详解
Feb 03 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
Python实现的质因式分解算法示例
May 03 Python
Django Rest framework之权限的实现示例
Dec 17 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
python代数式括号有效性检验示例代码
Oct 04 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
Python requests库参数提交的注意事项总结
Mar 29 Python
linux中nohup和后台运行进程查看及终止
Jun 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
php简单静态页生成过程
2008/03/27 PHP
PHP中读写文件实现代码
2011/10/20 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
vue上传图片组件编写代码
2017/07/26 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
python求解数组中两个字符串的最小距离
2018/09/27 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
Django如何将URL映射到视图
2019/07/29 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
QA工程师岗位职责
2013/11/20 职场文书
探矿工程师自荐信
2014/01/24 职场文书
成立公司计划书
2014/05/07 职场文书
民主评议党员总结
2014/10/20 职场文书
商场营业员岗位职责
2015/04/14 职场文书
赤壁观后感(2)
2015/06/15 职场文书
Java中API的使用方法详情
2022/04/06 Java/Android