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