教程:使用Python自动分类整理照片

作为一个热爱摄影的摄影师或者只是一个热爱拍照的普通人,你的电脑可能积累了大量的照片。这些照片散落在各个文件夹中,有时候你可能会感到疑惑,不知道应该如何将它们有序地整理起来。手动分类和整理这些照片是一项耗时耗力的工作,但好在有Python这个强大的工具,可以帮助你自动化这一过程。在本教程中,我将向你展示如何使用Python编写一个脚本,自动分类整理你的照片。

步骤 1:导入必要的库

首先,我们需要导入一些Python库,以便后续的操作。我们将使用os库来处理文件和文件夹,使用re库来进行正则表达式匹配,以及使用shutil库来移动文件。

import os
import re
import os.path as osp
import shutil

步骤 2:设置正则表达式

我们将使用正则表达式来匹配文件名,以便筛选出照片文件。在本例中,我们希望筛选出以.jpg结尾的文件,因此设置了一个正则表达式。

reg = re.compile(r'.*(.jpg)$')  # 以jpg结尾匹配照片

步骤 3:获取照片文件路径列表

接下来,我们需要获取当前工作路径下所有照片文件的绝对路径,并将它们存放在一个列表内。以下是获取文件路径列表的代码:

def file_path():
    """
    获取当前工作路径下所有照片绝对路径,并存放在一个列表内
    """
    file_path = []  # 照片文件路径列表
    filenames = os.listdir(path)  # 获取当前文件夹下的所有文件名
    list_j = [osp.join(path, x) for x in filenames if osp.isfile(osp.join(path, x))
              if reg.findall(x)]  # 获取照片的文件名,并拼接完整路径
    for s in list_j:
        if s:  # 非空
            file_path.append(s)

    # 根据文件名中的时间排序
    file_path.sort(key=lambda x: osp.basename(osp.splitext(x)[0])[8:19], reverse=False)

    return file_path

这段代码首先使用os.listdir函数获取当前工作路径下的所有文件名,然后通过正则表达式筛选出以.jpg结尾的文件,并将它们的绝对路径存放在file_path列表中。最后,我们对文件路径列表进行排序,以确保照片按照时间顺序排列。

步骤 4:分类和整理照片

现在,我们将编写代码来自动分类和整理照片。用户可以输入要创建的文件夹名称和每个文件夹应包含的照片数量。脚本将按照用户的要求创建文件夹,并将照片移动到相应的文件夹中。

def fenlei():
    while True:
        summ = 0
        dic = {}
        lit = []
        resm = len(file_path())
        name = input("请输入要创建的文件夹名称:")
        if not name:
            break
        else:
            num = int(input("请输入照片数量:"))
            summ += num  # 分配照片数量
            resm -= num  # 剩余照片数量
            if not num:
                break
            else:
                print(f'此文件夹共分配{summ}张照片', f"{f'还剩{resm}张照片待分配':.^30}")
                for i in range(summ):
                    lit.append(file_path()[i])
                    dic[name] = lit

        new_path = osp.join(path, name)
        if not osp.exists(new_path):
            os.mkdir(new_path)
        for file in lit:
            shutil.move(file, new_path)

        print()
        sr = input("是否继续创建文件夹?(y/n): ")
        if sr == "y":
            continue
        else:
            src = osp.basename(path) + "-已分类"
            dst = osp.join(osp.dirname(path), src)
            os.rename(path, dst)  # 重命名已分类
            print(f"{'照片已全部分好':.^34}")
            break

这段代码实现了一个循环,让用户可以连续创建多个文件夹并分配照片。用户需要输入文件夹名称和照片数量。脚本将根据用户的输入创建文件夹,并将照片移动到相应的文件夹中。用户可以选择继续创建文件夹或退出。

结语

通过本教程,你已经学会了如何使用Python编写一个简单的脚本,用于自动分类和整理照片。这个技巧可以帮助你节省时间,使文件整理变得更加高效。无论是整理照片还是其他类型的文件,Python都可以为你提供强大的自动化工具,希望你能充分利用这个方法,让文件整理变得轻松愉快!

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
教程

如何使用Python爬取豆瓣电影Top250的电影海报

2023-9-21 15:15:19

教程

使用Python下载并合并M3U8视频

2023-9-21 15:17:41

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索