python解析照片拍摄时间进行图片整理

作者:languageX 时间:2023-02-13 07:40:54 

引言

手机中拍摄照的照片和视频快爆了,想转移到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)

来源:https://cloud.tencent.com/developer/article/2048021

标签:python,解析,拍摄时间,整理照片
0
投稿

猜你喜欢

  • 利用python中集合的唯一性实现去重

    2021-03-29 18:42:25
  • Win10下用Anaconda安装TensorFlow(图文教程)

    2021-10-31 09:11:43
  • 用Python写个新年贺卡生成器

    2023-08-26 00:56:45
  • python将秒数转化为时间格式的实例

    2023-09-24 12:10:22
  • SQL Server表中添加新列并添加描述

    2024-01-23 08:10:17
  • JavaScript使用indexOf()实现数组去重的方法分析

    2024-04-28 09:39:03
  • JavaScript函数使用的基本教程

    2024-06-05 09:56:35
  • golang中使用匿名结构体的方法

    2023-07-10 07:26:56
  • zabbix通过percona插件监控mysql的方法

    2024-01-23 04:51:22
  • 关于Numpy数据类型对象(dtype)使用详解

    2023-10-09 02:31:24
  • jsp页面中获取servlet请求中的参数的办法详解

    2023-06-19 10:52:00
  • go语言中使用timer的常用方式

    2024-05-10 10:57:49
  • Python常见异常类型处理

    2021-12-30 03:09:01
  • MySQL进阶之索引

    2024-01-23 11:54:09
  • Python3 pandas.concat的用法说明

    2023-11-22 23:46:51
  • python实现简单的学生管理系统

    2022-11-25 08:34:04
  • Python实现的随机森林算法与简单总结

    2021-07-10 20:59:54
  • 教你如何利用Python批量翻译英文Word文档并保留格式

    2022-10-18 21:27:17
  • GitHub 热门:Python 算法大全,Star 超过 2 万

    2021-05-27 21:28:50
  • Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    2023-07-14 03:15:52
  • asp之家 网络编程 m.aspxhome.com