欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)

上一篇:

下一篇: