Python: 批量修改文件名

2018-07-27  本文已影响86人  谢小帅

问题描述

US_mid目录下,images中部分图片有label,存储在labelTxt路径
现在根据labelTxt路径下的文件,找到images路径对应的图片
并将其名字修改成对应的形式,比如 1.txt,1.jpg -> P0001.txt,P0001.jpg

import os

"""问题描述:
US_mid目录下,images中部分图片有label,存储在labelTxt路径
现在根据labelTxt路径下的文件,找到images路径对应的图片
并将其名字修改成对应的形式,比如 1.txt,1.jpg -> P0001.txt,P0001.jpg
"""

ROOT_PATH = 'C:/Users/Shuai/Desktop/US_mid'

image_path = ROOT_PATH + '/images'
label_path = ROOT_PATH + '/labelTxt'


def custombasename(fullname):
    return os.path.basename(os.path.splitext(fullname)[0])


def getnewname(oriname):
    namelen = 4  # 总共1000+图
    newname = 'P'
    for i in range(namelen - len(oriname)):
        newname += '0'
    newname += oriname
    return newname


# 按文件名数值大小排序
image_list = sorted(os.listdir(image_path), key=lambda t: int(t[:t.index('.')]))
label_list = sorted(os.listdir(label_path), key=lambda t: int(t[:t.index('.')]))

# 同时修改 image 和 label 的名字 1.json,1.jpg -> P0001.json,P0001.jpg
begin = 875  # 图片有序排列 开始序号
for i in range(len(label_list)):
    os.rename(label_path + '/' + label_list[i], label_path + '/' + getnewname(str(begin + i)) + '.txt')
    os.rename(image_path + '/' + custombasename(label_list[i]) + '.jpg',
              image_path + '/' + getnewname(str(begin + i)) + '.jpg')
    print('%d/%d' % (i + 1, len(label_list)))

images中剩余的没标记的图片用作测试集,也批量将其重命名。

import os

"""
批量修改测试集图片名
"""


def getnewname(oriname):
    namelen = 4  # 总共1000+图
    newname = 'T'
    for i in range(namelen - len(oriname)):
        newname += '0'
    newname += oriname
    return newname


filepath = 'C:/Users/Shuai/Desktop/US_mid/images'

# 有序图片列表
file_list = sorted(os.listdir(filepath), key=lambda t: int(t[:t.index('.')]))

begin = 237
for i in range(len(file_list)):
    os.rename(filepath + '/' + file_list[i], filepath + '/' + getnewname(str(begin + i)) + '.jpg')
    print('%d/%d' % (i, len(file_list)))

注意:os.rename 操作是不可逆的,要谨慎使用!

上一篇下一篇

猜你喜欢

热点阅读