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编写android截屏脚本双击运行即可
Jul 21 Python
python如何实现int函数的方法示例
Feb 19 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
python编程使用协程并发的优缺点
Sep 20 Python
python爬虫获取新浪新闻教学
Dec 23 Python
基于Python实现用户管理系统
Feb 26 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
Python类中self参数用法详解
Feb 13 Python
python matplotlib包图像配色方案分享
Mar 14 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python内置进制转换函数的操作
Jun 02 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
php getsiteurl()函数
2009/09/05 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
基于JS实现视频上传显示进度条
2020/05/12 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
在python中的socket模块使用代理实例
2014/05/29 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
党支部公开承诺书
2014/03/28 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
护士实习求职信
2014/06/22 职场文书
老兵退伍标语
2014/10/07 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
道歉短信大全
2015/05/12 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
创业计划书之花店
2019/09/20 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL