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压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
使用python编写监听端
Apr 12 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
python实现决策树分类
Aug 30 Python
简单谈谈python基本数据类型
Sep 26 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
Python中threading库实现线程锁与释放锁
May 17 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新手上路(六)
2006/10/09 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
js轮播图代码分享
2016/07/14 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
实习自荐信
2013/10/13 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
2014年减负工作总结
2014/12/10 职场文书
2015年度企业工作总结
2015/05/21 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers
python通过新建环境安装tfx的问题
2022/05/20 Python