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 相关文章推荐
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
Python GUI编程 文本弹窗的实例
Jun 11 Python
python打造爬虫代理池过程解析
Aug 15 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
python实现五子棋程序
Apr 24 Python
python能做哪些生活有趣的事情
Sep 09 Python
使用python操作lmdb对数据读取的实例
Dec 11 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php解决安全问题的方法实例
2019/09/19 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
python实现基于SVM手写数字识别功能
2020/05/27 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
浅析Python 多行匹配模式
2020/07/24 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
params有什么用
2016/03/01 面试题
环境工程毕业生自荐信
2013/11/17 职场文书
法人授权委托书
2014/09/16 职场文书
小平小道观后感
2015/06/09 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
解决Redis启动警告问题
2022/02/24 Redis
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫