照片信息的读取与分类(1)

2024-09-07 15:28
文章标签 读取 分类 信息 照片

本文主要是介绍照片信息的读取与分类(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

拿到了照片的拍摄时间后,就可以根据拍摄的年份和月份来确定照片要移动到的文件夹路径了。现在我们来分析一下如何从表示拍摄时间这个字符串中(2015:12:10 21:08:08 )提取出拍摄的年份和月份。
整个字符串由一个空格将拍摄的日期和具体的时间分隔开来

在拍摄日期的部分中,拍摄的年、月、日又被两个冒号分隔开来。
同样的,拍摄时间也被两个冒号分隔成了时、分、秒三个部分。

将示例中拍摄日期分隔成日期和时间,把分隔后的列表赋值给变量takeTimeParts,然后使用两个print分别输出日期和时间。

要对拍摄时间的字符串进行拆解,我们可以使用字符串的内置函数split()
分隔符作为参数传入到split()函数中,即可把字符串按照指定分隔符切分成多个字符串组成的列表。
例如:
字符串 2015:12:10 21:08:08
被“空格”切分后就变成了
["2015:12:10", "21:08:08"]

把拍摄日期通过冒号分隔,分成年、月、日三部分,赋值给变量photoDateParts。再使用print分别输出年、月、日。

将整个拍摄日期通过空格切分后,我们需要把分隔后的“年月日”部分单独赋值给变量photoDate
然后对此字符串再调用一次split()函数,通过冒号将日期分隔成年、月、日。
注意:需要使用英文冒号 进行切分。

利用格式化字符串拼出文件夹名称,并赋值给变量targetFolderName,再使用os.path.join()函数拼出分类文件夹的路径, 并赋值给photoTargetPath变量。最后输出变量photoTargetPath。

学会了通过分隔字符串来提取拍摄的年、月、日之后,下一步就可以通过格式化字符串的方式,以年份和月份为参数给照片文件夹进行命名了(命名格式:xxxx年xx月)。
因为分类的文件夹依然位于 /Volumes/backup/照片路径下,所以我们可以直接使用os.path.join()函数拼出分类文件夹的相对路径。

使用os.path.exists()函数判断照片分类的文件夹是否存在,如果不存在,就使用os.mkdir()函数创建文件夹。

1

# 导入os模块

2

import os

3

4

# 导入ezexif模块

5

import ezexif

6

7

# 修改当前工作目录到/Volumes/backup

8

os.chdir('/Volumes/backup')

9

10

# 待处理照片的相对路径

11

backupPhotoPath = "照片"

12

13

# 使用函数os.listdir()获取所有待处理照片文件列表

14

photoList = os.listdir(backupPhotoPath)

15

16

# 遍历文件列表

17

for photo in photoList:

18

    # 使用os.path.join()函数组合得到照片文件路径,并赋值给变量photoPath

19

    photoPath = os.path.join(backupPhotoPath, photo)

20

    # 获取exif信息

21

    exifInfo = ezexif.process_file(photoPath)

22

    # 获取拍摄时间

23

    takeTime = exifInfo["EXIF DateTimeOriginal"

接下来,我们就需要使用在前面课程中学过的os.path.exists()函数来判断目标文件夹是否存在。
如果目标文件夹不存在,就使用os.mkdir()函数创建文件夹。

导入内置模块shutil,然后将照片文件通过shutil.move()函数移动到目标文件夹。

确保文件夹创建好后,我们只需要使用shutil.move()函数,就可以完成今天问题的最后一步:将照片移动到目标文件夹啦。
注意,使用shutil.move()函数前,记得先使用import导入shutil内置模块哦。

1

# 导入os模块

2

import os

3

4

# 导入ezexif模块

5

import ezexif

6

7

# 导入shutil模块

8

import shutil

9

10

# 修改当前工作目录到/Volumes/backup

11

os.chdir('/Volumes/backup')

12

13

# 将待处理照片的相对路径赋值给backupPhotoPath

14

backupPhotoPath = "照片"

15

16

# 使用函数os.listdir()获取所有待处理照片文件列表

17

photoList = os.listdir(backupPhotoPath)

18

19

# 遍历文件列表

20

for photo in photoList:

21

    # 使用os.path.join()函数组合得到照片文件路径,并赋值给变量photoPath

22

    photoPath = os.path.join(backupPhotoPath, photo)

23

    # 获取exif信息

24

    exifInfo = ezexif.process_file(photoPath)

25

    # 获取拍摄时间

26

    takeTime = exifInfo["EXIF DateTimeOriginal"]

27

    # 通过空格分隔成拍摄日期和拍摄时间

28

    takeTimeParts = takeTime.split(" ")

29

    # 分隔后的字符串列表第一个元素就是拍摄日期,赋值给变量photoDate

30

    photoDate = takeTimeParts[0]

31

    # 再把拍摄日期通过冒号分隔,分成年、月、日三部分,赋值给变量photoDateParts

32

    photoDateParts = photoDate.split(":")

33

34

    # 利用格式化字符串拼出文件夹名称

35

    targetFolderName = f"{photoDateParts[0]}{photoDateParts[1]}"

36

    # 使用os.path.join()函数拼出分类文件夹的路径, 并赋值给photoTargetPath变量

37

    photoTargetPath = os.path.join(backupPhotoPath, targetFolderName)

38

39

    # 如果目标文件夹不存在,使用os.mkdir()函数创建文件夹

40

    if not os.path.exists(photoTargetPath):

41

        os.mkdir(photoTargetPath)

42

43

    # 移动到目标文件夹

44

    shutil.move(photoPath, photoTargetPath)

shutil.move()函数可以用来移动文件或文件夹。它接收两个参数,第一个参数是要移动的文件(夹)路径,第二个参数是目标文件(夹)的路径。

这篇关于照片信息的读取与分类(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145431

相关文章

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取