教程:使用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都可以为你提供强大的自动化工具,希望你能充分利用这个方法,让文件整理变得轻松愉快!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:教程:使用Python自动分类整理照片

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月21日
下一篇 2023年9月21日

相关推荐

  • 如何使用Python搜索并获取音乐信息

    在数字时代,音乐已经成为我们日常生活中不可或缺的一部分。有时候,我们迫切地想要找到某首歌曲或了解某位歌手的作品,但是如何高效地搜索和获取音乐信息呢?本教程将教你如何使用Python编写一个程序来搜索并获取…

    2023年10月19日
    00
  • 用Python实现二维码识别应用

    想象一下,你正坐在电脑前,突然收到了一个包裹。你迫不及待地打开它,里面有一张装有神秘图案的纸片。这个图案是一个二维码,但你不知道它隐藏了什么秘密。是一份神秘的情书?还是一个链接,将你带入未知的冒险?…

    2023年9月26日
    00
  • 如何将Python Web应用部署到Azure应用服务

    欢迎来到本教程!在这里,你将学习如何将你的Python Web应用(可以是Django或Flask)部署到Azure应用服务。Azure应用服务是一项完全托管的Web托管服务,支持在Linux服务器环境中托管的Python应用。让我们开始吧! …

    2023年9月19日
    00
  • 如何打造你自己的Python学生管理系统:简单、高效、实用!

    记得刚学会编程的那段日子吗?最开始,我们就像一个空白的画布,对这个充满可能性的世界充满好奇。但随着时间的推移,你可能会发现自己陷入了一种单调乏味的状态——总是在做一些重复的任务,比如管理数据、整理文件…

    2023年9月24日
    00
  • 如何使用Python爬取豆瓣电影Top250的电影海报

    作为一位电影爱好者,你可能经常关注豆瓣电影上的Top250电影榜单,想要了解哪些电影备受推崇。而且,你可能也希望将一些你喜欢的电影的海报保存下来,以便日后欣赏或分享。但是,手动一个一个点击电影,然后下载海…

    2023年9月21日
    00
  • 微软将Python直接融入Excel:办公软件的双进化

    近年来,Python和Excel一直在办公软件领域扮演着重要的角色。Python以其强大的编程功能和丰富的库生态备受欢迎,而Excel则是数据处理和分析的利器,几乎成了每个办公室的标配工具。然而,最近微软带来了令人振奋的…

    2023年8月25日
    00
  • 如何使用Python快速去除图片背景并保存

    你是否曾经遇到过这样的问题:你有一张图片,但是你只想保留其中的某些物体或图案,而将其他部分的背景删除?这可能是因为你需要将物体或图案添加到其他图片中,或者只是为了更好地突出显示这些物体。在这个教程中…

    2023年9月14日
    00
  • 如何用Python提高会计工作效率

    你是否曾经想过如何在会计工作中更高效地处理数据、自动化繁琐的任务,或者提供更准确的财务报告?Python编程语言可能不是会计专业的一部分,但它可以成为你在会计领域的有力工具。在这篇教程中,我们将探讨一些Pyt…

    2023年9月14日
    00
  • 生成随机字符串的Python教程

    你是否曾经需要生成随机字符串,无论是用于密码,测试数据,还是其他目的?这个简单的Python程序可以帮助你生成自定义长度和字符集的随机字符串。在本教程中,我们将介绍如何使用Python和Tkinter库创建一个交互式的…

    2023年9月18日
    00
  • Python GIL:解析并发、并行和线程安全

    一天,小明在调试他的 Python 多线程应用程序时,发现程序的并发性能并没有他预期的那么好。他很困惑,为什么在一个多核的 CPU 上,他的多线程程序似乎只在一个核上运行?他在网上搜索了一番,然后遇到了一个称为 &…

    2023年10月9日
    00