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

首先我们可以先了解一下所需的模块和方法。

  1. exifread模块

可以使用exifread模块来解析图片的EXIF信息。

  1. datetime模块

可以使用datetime模块将EXIF信息中的时间转化为datetime对象,以便进行比较和排序。

具体步骤如下:

  1. 导入所需模块:
import exifread
from datetime import datetime
import os
  1. 编写函数来解析EXIF信息,获取拍摄时间:
def get_image_taken_time(file_path):
    with open(file_path, 'rb') as f:
        tags = exifread.process_file(f)
        if 'EXIF DateTimeOriginal' in tags:
            taken_time = tags['EXIF DateTimeOriginal'].values
            taken_time = datetime.strptime(taken_time, '%Y:%m:%d %H:%M:%S')
            return taken_time
        else:
            return None

该函数接受一个文件路径作为参数,并返回图片的拍摄时间,如果无法获取到拍摄时间则返回None。

  1. 遍历文件夹中的所有图片文件,并按照拍摄时间进行分类:
dir_path = 'path/to/image/directory'
image_files = [os.path.join(dir_path, file) for file in os.listdir(dir_path) if file.lower().endswith(('.jpg', '.jpeg', '.png', '.gif'))]
image_files.sort(key=lambda file: get_image_taken_time(file))

for file in image_files:
    taken_time = get_image_taken_time(file)
    if taken_time:
        year = taken_time.strftime('%Y')
        month = taken_time.strftime('%Y-%m')
        day = taken_time.strftime('%Y-%m-%d')

        year_dir = os.path.join(dir_path, year)
        month_dir = os.path.join(year_dir, month)
        day_dir = os.path.join(month_dir, day)

        if not os.path.exists(year_dir):
            os.mkdir(year_dir)
        if not os.path.exists(month_dir):
            os.mkdir(month_dir)
        if not os.path.exists(day_dir):
            os.mkdir(day_dir)

        new_file_path = os.path.join(day_dir, os.path.basename(file))
        os.rename(file, new_file_path)

该代码会将指定文件夹中的所有图片文件按照拍摄时间进行排序,并将它们分类保存到年月日文件夹中。

例如,以下是一个图片文件夹中的示例文件:

/Photos
    /IMG_001.jpg
    /IMG_002.jpg
    /IMG_003.jpg

经过上述代码处理后,文件夹的结构将变为:

/Photos
    /2022
        /2022-01
            /2022-01-01
                /IMG_001.jpg
            /2022-01-02
                /IMG_002.jpg
        /2022-02
            /2022-02-01
                /IMG_003.jpg

由于示例文件中的拍摄时间分别为2022年1月1日、2022年1月2日和2022年2月1日,因此它们被保存到了对应的年月日文件夹中。

以上就是整个Python解析照片拍摄时间进行图片整理的完整攻略,接下来是两条示例说明:

示例一:

假设存在以下文件:

/Photos
    /IMG_001.jpg
    /IMG_002.jpg
    /IMG_003.jpg

其中,IMG_001.jpg的拍摄时间为2022年5月1日,IMG_002.jpg的拍摄时间为2022年5月2日,IMG_003.jpg的拍摄时间为2022年5月3日。

如果运行以上代码,将会得到以下文件夹结构:

/Photos
    /2022
        /2022-05
            /2022-05-01
                /IMG_001.jpg
            /2022-05-02
                /IMG_002.jpg
            /2022-05-03
                /IMG_003.jpg

因此,所有图片文件将会按照拍摄时间被整理分到对应的年月日文件夹中。

示例二:

假设存在以下文件:

/Photos
    /IMG_001.jpg
    /IMG_002.jpg
    /IMG_003.jpg

其中,IMG_001.jpg没有拍摄时间,IMG_002.jpg的拍摄时间为2022年5月2日,IMG_003.jpg的拍摄时间为2022年5月1日。

如果运行以上代码,将会得到以下文件夹结构:

/Photos
    /2022
        /2022-05
            /2022-05-01
                /IMG_003.jpg
            /2022-05-02
                /IMG_002.jpg

由于IMG_001.jpg无法获取拍摄时间,因此它未能被整理到相应的文件夹中,而且文件的顺序将会按照拍摄时间来排序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python解析照片拍摄时间进行图片整理 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 解决pycharm中导入自己写的.py函数出错问题

    这里是解决PyCharm中导入自己写的.py函数出错问题的完整攻略。 1. 确认PyCharm工作环境 首先确认你的PyCharm工作环境是否正确,包括Python版本和项目设置等。确保你正在使用正确的Python版本,并且项目设置中已正确设置Python解释器。如果你不确定某些设置,可以通过以下步骤打开项目设置:点击菜单栏中的“File” -> “S…

    python 2023年5月13日
    00
  • python 打印dict的key与value方式

    当我们需要查看Python字典(dict)的键(key)和值(value)时,我们可以使用以下三种方法: 方法1:遍历字典进行打印 我们可以使用字典的items()方法遍历字典,以打印所有键和值对。示例如下: my_dict = {‘key1’: ‘value1’, ‘key2’: ‘value2’, ‘key3’: ‘value3’} for key, v…

    python 2023年5月13日
    00
  • Pycharm-community-2020.2.3 社区版安装教程图文详解

    下面我来详细讲解“Pycharm-community-2020.2.3 社区版安装教程图文详解”的完整攻略。 1. 下载安装包 首先在官网(https://www.jetbrains.com/pycharm/download/)下载 PyCharm 社区版的安装包。选择相应的操作系统版本下载,下载完成后解压。 2. 安装 PyCharm 双击解压后的安装包,…

    python 2023年6月5日
    00
  • Python实现购物车程序

    Python实现购物车程序攻略 购物车程序可以用来模拟电商网站的购买流程,通过记录用户的购买行为,方便用户之后的查询和管理。下面是实现购物车程序的攻略: 1. 设计数据模型 购物车程序需要实现的功能包括:添加商品、删除商品、修改商品数量、查看购物车中的商品以及结算等。为了实现这些功能,首先需要设计购物车和商品的数据模型。 购物车的数据模型可以用一个列表来表示…

    python 2023年5月19日
    00
  • Python文件简单操作及openpyxl操作excel文件详解

    Python文件简单操作及openpyxl操作excel文件详解 Python文件简单操作 文件的打开和关闭 使用open()函数可以打开指定的文件,该函数包含两个参数:第一个参数是文件的路径,第二个参数是文件的打开模式。常见的文件打开模式如下: r: 以只读方式打开文件 w: 以写入方式打开文件,如果文件不存在则创建文件,如果文件已存在则覆盖文件内容 a:…

    python 2023年6月3日
    00
  • python全面解析接口返回数据

    为了完整地讲解“Python全面解析接口返回数据”的攻略,我们需要按照以下步骤进行: 步骤一:确定请求接口 在访问某个接口之前,我们需要确定自己想要请求获取的数据和接口所需的参数,这些参数在访问接口时需要进行传递。我们可以使用Python中的requests库来向服务器发送HTTP请求。 import requests params = { ‘param1’…

    python 2023年6月3日
    00
  • 利用python获取某年中每个月的第一天和最后一天

    针对问题“利用python获取某年中每个月的第一天和最后一天”的完整攻略,以下是具体的步骤: 1. 导入模块 我们需要用到 Python 标准库中的 calendar 模块,所以首先需要导入该模块: import calendar 2. 获取某月的第一天和最后一天 calendar 模块提供了 monthrange() 方法,该方法能够获取指定年份和月份的日…

    python 2023年6月2日
    00
  • python基础梳理(一)(推荐)

    “Python基础梳理(一)(推荐)”是一篇讲解Python语言基础的教程文章,其主要内容包括Python的数据类型、变量、运算符、控制流等基础知识点。以下是该教程的完整攻略。 一、Python数据类型 在这一部分,我们会讲解Python中常用的数据类型,包括数字、字符串、列表、字典、元组和集合。对于每种数据类型,我们会讲解其基本定义、操作方法和常见的应用场…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部