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

 更新时间:2022-08-03 22:52:25   作者:佚名   我要评论(0)

目录引言1. 获取图片拍摄时间2. 获取视频拍摄时间3. 根据图片时间建立文件夹完整代码引言
手机中拍摄照的照片和视频快爆了,想转移到PC端,并

引言

手机中拍摄照的照片和视频快爆了,想转移到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如何根据照片修改时间重命名并排序详解
  • Python数据获取实现图片数据提取
  • 利用Python提取图片经纬度并锁定拍照地点

相关文章

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

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

    目录引言1. 获取图片拍摄时间2. 获取视频拍摄时间3. 根据图片时间建立文件夹完整代码引言 手机中拍摄照的照片和视频快爆了,想转移到PC端,并
    2022-08-03
  • Python中的socket网络模块介绍

    Python中的socket网络模块介绍

    目录Socket服务端(server.py)客户端(client.py)socket中的一些常用方法Socket 对象(内建)方法Python Internet 模块前言: Python3 提供了两个
    2022-08-03
  • python高温预警数据获取实例

    python高温预警数据获取实例

    引言 最近一段时间,四川真的感觉遭遇了最大最强高温,一到户外感觉都要被烤干了,可怕的故事是,现在才只有7月份呢,要是等到了8 、9月份,
    2022-08-03
  • Unity创建平铺网格地图的方法

    Unity创建平铺网格地图的方法

    本文实例为大家分享了Unity创建平铺网格地图的具体代码,供大家参考,具体内容如下 创建预制件 先拖进场景,再从层级拖回资源 选中源图像文
    2022-08-03
  • Go语言测试库testify使用学习

    Go语言测试库testify使用学习

    目录简介准备工作assertContainsDirExistsElementsMatchEmptyEqualErrorEqualValuesErrorErrorAsErrorIs逆断言Assertions 对象requiremocksu
    2022-08-03
  • echarts几个公司内部数据可视化图表必收藏

    echarts几个公司内部数据可视化图表必收藏

    目录折线图日负荷折线图最大需求表柱状图日电量柱状图分时电量功率因数三相温度水球图年月日负荷率图散点图三相平衡最近公司有一个需求,要做
    2022-08-03
  • Python中的 No Module named ***问题及解决

    Python中的 No Module named ***问题及解决

    目录No Module named ***问题问题描述python3 No module named 'PIL'使用命令No Module named ***问题 问题描述 使用python的时候,
    2022-08-03
  • 一文搞懂PHP中的抽象类和接口

    一文搞懂PHP中的抽象类和接口

    目录一.抽象类1.定义2.应用场景3.入门代码4.细节5. 代码分解二.接口1.定义2. 应用场景3.入门代码4.注意细节三.类和接口之间关系一.抽象类 1.
    2022-07-25
  • php性能优化进阶不要在for循环中操作DB

    php性能优化进阶不要在for循环中操作DB

    目录前言场景说明解题思路核心代码示例性能对比反思总结前言 如何提高程序运行速度,减轻服务器压力是服务端开发必须面对的一个问题。 简单且
    2022-07-25
  • PHP常见方法封装总结

    PHP常见方法封装总结

    目录1.get请求2.post请求3.随机字符串4.返回json数据5.数据过滤6.重定向7.获取客户端ip1.get请求 function get_curl($url, $timeout = 5) {
    2022-07-25

最新评论