糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 将不同名字照片分类 然后创建同名文件夹 之后再修改文件夹中的照片名

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

时间:2023-08-17 16:47:14

相关推荐

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

跑深度学习项目时,需要用到不同的照片。就像上图一样,我需要将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 osimport shutilcurrent_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:passtry: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 osimport 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 osimport 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 osimport 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('所有照片已经完成重命名。')

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

如果觉得《将不同名字照片分类 然后创建同名文件夹 之后再修改文件夹中的照片名》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。