将不同名字照片分类,然后创建同名文件夹,之后再修改文件夹中的照片名

本文介绍了一个Python脚本,该脚本可以自动将带有_vis的照片分类到特定文件夹,然后去掉_vis并重命名这些照片。此外,脚本还会为每张照片创建同名的文件夹并将照片移动进去。整个流程包括了照片的分类、文件夹创建和照片重命名,可用于深度学习项目的准备工作。利用PyInstaller工具,该脚本还可以被转换为可执行的.exe文件,方便在Windows系统上直接运行。
摘要由CSDN通过智能技术生成

跑深度学习项目时,需要用到不同的照片。就像上图一样,我需要将0002_c1s1_000451_03.png和0002_c1s1_000451_03_vis.png分别放在不同的文件夹中。因为它们两个是不用的照片,我只需要0002_c1s1_000451_03_vis.png这种名字的照片,但是我的网络无法识别带有_vis 的名字,因此我需要将0002_c1s1_000451_03_vis.png 去掉_vis。然后得到去掉_vis的0002_c1s1_000451_03.png,再为这个图片创建同一个同名的文件夹,并将该照片放到这个文件夹中。 记录一下实现过程。

以下为实现步骤:

一、将照片分类:

import os
import shutil

current_path = os.getcwd()
print('当前目录:' + current_path)

filename_list = os.listdir(current_path)
print('当前目录下文件:', filename_list)

print('正在分类整理进文件夹ing...')
for filename in filename_list:
    try:
        name1, name2 = filename.split('.')
        if name2 == 'jpg' or name2 == 'png':

            _,_,_,_,a = name1.split('_')   # 此行就是按照照片名中的 “_” 将照片名分割开,以最后 
                                           # 一个分割块为区分标志
            if a == 'vis':
                try: 
                    os.mkdir("包含vis的文件")    # 创建一个名字为 “包含vis的文件” 的文件夹
                    # print('创建文件夹' + name1[:-1])
                except:
                    pass

                try:
                    shutil.move(current_path + '\\' + filename, current_path + '\\' + "包含vis的文件")
                    print(filename + '转移成功!')
                except Exception as e:
                    print('移动失败:' + e)

 (注:将上述代码放在Pycharm中保存为.py文件)再将上面的代码时使用 pyInstaller 工具包将.py文件转化为.exe文件,可以参考CSDN上的大神们的文章。

1. 将.py文件打包成.exe文件

(1):win10 系统  win + r   输入cmd 打开命令行窗口

  (2)   : 安装 pyInstaller

pip install pyinstaller

(3):安装 pypiwin32

pip install pypiwin32

 (4):使用 cd 命令 进入要打包的文件夹下

 (5):开始打包

pyinstaller -F -i 图标.ico main.py -n 你打算给程序重命名的名字 

注:参数含义

格式如下:
pyinstaller [opts] yourprogram.py
参数含义
-F 指定打包后只生成一个exe格式的文件(建议写上这个参数)
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c –console, –nowindowed 使用控制台,无界面(默认)
-w –windowed, –noconsole 使用窗口,无控制台
-p 添加搜索路径,让其找到对应的库。
-i 改变生成程序的icon图标

例1.指定文件路径打包:pyinstaller -F D:\project\tanchishe.py
例2.不带窗口,后台运行打包:pyinstaller -F -w D:\project\tanchishe.py
例3.更换程序图标打包:pyinstaller -F -w -i D:\project\test.ico D:\project\tanchishe.py

 (6):按下enter键,开始打包。出现下面的表示打包成功。

 (7):在你要打包的 .py文件夹中会生成下面几个文件。

 (8):在dis文件夹中会有一个.exe文件。

这个.exe文件就是用于分类的程序。

2. 将这个 “分类程序.exe” 保存到要分类的照片文件夹中,双击运行它,就能实现将两个不同照片名的照片分开。

 二、 去除0002_c1s1_000451_03_vis.png 照片名中的 “_vis”。

import os
import shutil

# 定义要重命名的文件夹路径和去掉的字符串
folder_path = "E:/包含vis的文件"
remove_str = "_vis"

# 获取文件夹中所有文件的列表
file_list = os.listdir(folder_path)

# 遍历文件列表,为每个文件生成新的文件名并重命名
for old_name in file_list:
    # 如果文件名中包含remove_str,则将其去掉
    if remove_str in old_name:
        new_name = old_name.replace(remove_str, "")  # 使用replace方法将remove_str替换为空字符串
    else:
        new_name = old_name  # 如果文件名中不包含remove_str,则不进行修改

    # 构造文件的完整路径
    old_path = os.path.join(folder_path, old_name)
    new_path = os.path.join(folder_path, new_name)

    # 使用shutil模块进行文件重命名
    shutil.move(old_path, new_path)

    print(f"{old_name} 重命名为 {new_name}")

三、为重命名的照片生成同名的文件夹。

import os
import shutil

# 原始文件夹路径
source_folder_path = "E:/new_val_1"

# 获取原始文件夹中的所有文件
files = os.listdir(source_folder_path)

# 遍历所有文件
for file in files:
    # 将文件名和文件扩展名分开
    file_name, file_extension = os.path.splitext(file)

    # 如果是照片文件
    if file_extension in [".jpg", ".jpeg", ".png", ".gif"]:
        # 创建以文件名为名字的文件夹
        new_folder_path = os.path.join(source_folder_path, file_name)
        if not os.path.exists(new_folder_path):
            os.mkdir(new_folder_path)

        # 将照片移动到新文件夹中
        source_path = os.path.join(source_folder_path, file)
        shutil.move(source_path, new_folder_path)
        print(f"{file_name} 完成文件夹创建")
print('全部文件创建完成。')

 四、将文件夹中的照片重命名为foreground.png。

import os
import shutil

# 指定包含要重命名文件的文件夹的父文件夹路径
parent_folder = "E://new_val_1"

# 遍历所有子文件夹
for folder_name in os.listdir(parent_folder):
    # 构造子文件夹的完整路径
    folder_path = os.path.join(parent_folder, folder_name)

    # 如果子文件夹是文件夹而不是文件,且其中只有一张图片
    if os.path.isdir(folder_path) and len(os.listdir(folder_path)) == 1:
        # 获取文件夹中的文件名
        old_name = os.listdir(folder_path)[0]

        # 仅处理.png和.jpg文件
        if old_name.endswith(".png") or old_name.endswith(".jpg"):
            # 构造新文件名
            new_name = "foreground.png"

            # 构造完整的文件路径
            old_path = os.path.join(folder_path, old_name)
            new_path = os.path.join(folder_path, new_name)

            # 重命名文件
            shutil.move(old_path, new_path)
            print(f"{old_name} 已修改为foreground.png")
print('所有照片已经完成重命名。')

以上就能实现照片的分类、文件夹的创建以及文件夹中照片的重命名。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值