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
操作是不可逆的,要谨慎使用!