python批量修改文件夹内所有图片的名字

声明: 本文代码非原创, 原文链接没找到,记录一下,以防不时之需.

实现图片处理的时候可能需要将图片名字批量处理一下变成按顺序如001.jpg... ...100.jpg的形式,但是我直接在网络上爬取的图片的命名好像是按照爬取的日期保存的,当然你也可以在爬取文件中修改,但我们不考虑这种情况

我们就考虑当前文件夹下的文件或者文件夹是乱序的,如下:

我们的目标是修改成酱紫的:

code:

import sys, string, os, shutil

def RenameFiles(prefix,srcdir,postfix):
    # os.listdir(path)历遍所有文件路劲,返回为列表
    srcfiles = os.listdir(srcdir)
    index = 1
    for srcfile in srcfiles:
        # os.path.splitext将文件名和后缀名字分开,返回元组
        # srcfilename表示只获取元组首个元素,即文件名
        srcfilename = os.path.splitext(srcfile)[0]
        # sufix表示获取元组第二个元素,即获取后缀名
        sufix = os.path.splitext(srcfile)[1]
        #根据目录下具体的文件数修改%号后的值,"%04d"最多支持9999
        destfile = srcdir + "//"+ prefix + "%04d"%(index) + postfix
        srcfile = os.path.join(srcdir, srcfile)
        # os.rename() 方法用于命名文件或目录,从 src  dst,如果dst是一个存在的目录, 将抛出OSError
        os.rename(srcfile, destfile)
        index += 1
        print (destfile)
srcdir = "./test_name"
prefix = "前缀"
postfix = "后缀"
RenameFiles(prefix,srcdir,postfix)

output:

./test_name//前缀0001后缀
./test_name//前缀0002后缀
./test_name//前缀0003后缀
./test_name//前缀0004后缀

修改图片的名字:

我的图片读取的时候是格式是"date_v000_1.jpg",我要修改成"set00_v000_1.jpg"也就是只修改部分,赶紧写下了记住这个以后再修改个图片数据集名字什么的都不怕了

code:

import os
# 图片输入路径
path = '/media/li_hiayu/D/Caltech/JPEG'
# 图片输出路径,用来存储修改名字后图片的位置,当然你也可以覆盖在pathoutpath = '/media/li_hiayu/D/Caltech/JPEGImages'

if not os.path.exists(outpath):
   os.makedirs(outpath)

# os.listdir(path)历遍path路径并获取文件名存储到列表中并返回
for img in os.listdir(path):
    # 这一句hin重要,是个隐藏文件... .. .
    if img != '.DS_Store':
   # os.path.splitext将文件名拆分为名字和后缀名,可以打印出来看一下
        name = os.path.splitext(img)
   # 获取拆分后的第一个元素(文件名)也就是“data_v000_1”
        img_segment = name[0]
   # 再拆分一次
        name_segment = img_segment.split("_")
        first_segment = name_segment[0] #data
        second_segment = name_segment[1]#v000
        three_segment = name_segment[2]# 1
   # 获取拆分后的第二个元素(后缀名)
        four_segment = name[1] # ".jpg"
        str = "set00"
   # 补全图片路径
        org_name = os.path.join(path,img)
   # 补全修改后的路径以及文件名
        changed_name = outpath+"//"+str+"_"+second_segment+"_"+three_segment+four_segment
   # os.rename(old_one,new_one)
        os.rename(org_name,changed_name)
提醒:修改之后,原来文件夹中的图片就完全转移到outpath中,也就是JPEG就清空了

The end.

你可能感兴趣的:(Easy,Python)