python 批量改文件名且jpg改为png
程序员文章站
2023-12-21 14:06:28
...
python 改文件名
在进行深度学习的时候,需要将训练集中的文件名进行批量的更改,数据量大,肯定不能自己手动更改,于是就需要手动写个脚本。
import os 用其中的os.rename命令就可以完成名字的更改,通常我会把文件改为数字名,如果需要改拓展名,做个切片的操作,也可以更改拓展名。
图片拓展名的更改(从jpg格式到png格式)
但如果是更改图片的拓展名,这里有个问题。我将jpg格式的图片改了名为png格式后,发现只是改了拓展名,在ubuntu中并不能打开这个文件,系统显示,这时的图片仍然不是png格式的。出现了名字和格式实际不统一的问题,因此需要换一种方法。
利用openCV更改图片格式
选择用openCV读取每一张图片,不用显示,然后保存这张图片,名字这时就可以改为之前想进行更改的格式,这时成功转为了png格式。
代码如下,换个路径应该就能成功运行。
注释的内容是其他方法进行改名的操作。
代码
import os
import cv2
def renameFile(img_Dir):
img_pathDir = os.listdir(img_Dir) # 提取所有文件名,并存在列表中
print(img_Dir) # 输出文件路径
print(img_pathDir) # 输出文件名列表
print(len(img_pathDir)) # 输出文件数
for i in range(len(img_pathDir)):
img_name = img_pathDir[i] # 变量储存:文件名+拓展名
img_path_name = img_Dir + img_name # 变量储存:绝对路径+文件名+拓展名
print(img_name) # 输出文件名+拓展名
print(img_path_name) # 输出绝对路径+文件名+拓展名
# img_new_path_name = img_path_name[:-4] + '.png' # 只更改文件的拓展名,通常只改为png,会导致图片读不出来
# print(img_new_path_name)
img = cv2.imread(img_path_name)
number_name = img_Dir+str(i+1) + '.png' # 改拓展名和文件名,文件名为序号,从1开始
print(number_name)
cv2.imwrite(number_name, img) # 用opencv读一下文件,再存出来,改名为png,但原文件还在
os.remove(img_path_name) # 删除原文件
# os.rename(img_path_name, number_name) # 直接用os的rename命令改名
return
if __name__ == '__main__':
img_Dir = '/home/rtx2080ti/SIS_Dataset/all/'
renameFile(img_Dir)