python解析照片拍摄时间进行图片整理
作者:languageX 发布时间:2023-02-13 07:40:54
标签:python,解析,拍摄时间,整理照片
引言
手机中拍摄照的照片和视频快爆了,想转移到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
0
投稿
猜你喜欢
- Stickyworld 的网页应用已经支持视频拨放一段时间,但都是通过YouTube的嵌入模式实现。我们开始提供新的版本支持视频操作,可以让
- 本文介绍了Python小波分析库Pywavelets,分享给大家,具体如下:# -*- coding: utf-8 -*- import n
- 对于三目运算符(ternary operator),python可以用conditional expressions来替代如对于x<5
- python保存文本文件的方法:使用python内置的open()类可以打开文本文件,向文件里面写入数据可以用write()函数,写完之后,
- 在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性。每次实例化一个对象
- 一、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。1.得到当前工作目录,即当前Python脚本工作的目录路
- 本文在上文的基础上重新实现支持多线程的服务器。以下为TCP客户端的程序代码:#!/usr/bin/env python3import sys
- 导读只需要添加几行代码,就可以得到更快速,更省显存的PyTorch模型。你知道吗,在1986年Geoffrey Hinton就在Nature
- 目录一.简介二.特色三.flask规模化四. flask Blueprint总结一.简介Flask是一个使用Python编写的轻量级Web应
- 我们可以利用urllib来抓取远程的数据进行保存哦,以下是python3 抓取网页资源的多种方法,有需要的可以参考借鉴。1、最简单impor
- 前几篇都是手动录入或随机函数产生的数据。实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。比如之前python基础(12)
- Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree。首先 import 之
- 1.尽量将资源文件夹放到主文件夹下2.pyi-makespec main.py制作spec文件3.spec文件在当前文件夹下,main.sp
- PHP 中的 Interface 是一种非常重要的特性,它允许开发人员定义一组规范或者约束,以确保类之间的互操作性和兼容性。在本文中,我们将
- em 和 strong 的区别,可以从三个层次上来谈。首先看 HTML 4.01 中的说明:EM: Indicates emphasis.S
- 这个使用起来很简单,以前需要的时候在网上找的,用了感觉还不错,具体的看演示就明白了。,这个可以保留你文章中的html标记,需要你修改的就是下
- 在一行内声明CSS,对比下面两个:h2 {font-size:18px; border:1px solid&n
- python爬虫模块PyQuery简介PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,
- 1. imageZMQ库实现imageZMQ库链接:https://github.com/jeffbass/imagezmq该库原本是用于树
- MySQL字符集出错的解决方法:错误案例: Illegal mix of collations (gbk_chinese_ci,I