Recentemente, ao treinar a rede neural para detecção de alvo, descobriu-se que os colchetes nos seguintes nomes de arquivo e os espaços antes dos colchetes precisam ser removidos juntos.
O endereço de armazenamento das seguintes imagens é D:\code\new\JPEGImages
Ideia: Como o número de dígitos na frente do nome da imagem é diferente e o final do nome da imagem é (*).jpg, considere a contagem regressiva da fatia. Primeiro, corte o nome do arquivo em duas strings através do caractere ")", depois corte a string anterior em duas strings até "(", e finalmente adicione as três strings e substitua o nome do arquivo original.
Exemplo: Por exemplo, modifique 1_220709 (1).jpg
Primeiro divida o caractere ")" em 1_220709 (1 e .jpg , depois divida a string anterior em 1_220709 e 1 até "(" , e finalmente adicione os três para obter 1_2207091.jpg
Observe especificamente a implementação do código:
import os #导入模块
filepath = 'D:/code/new/JPEGImages' #存放图片的文件夹地址
listnames = os.listdir(filepath) #读取文件夹里面的文件名,得到一个字符串列表
for index in listnames: #通过for循环遍历提取listnames容器中的单个文件名
mid = index.split(')')[0] #split分割字符串, 分割之后是两个字符串, 索引[0]取前面的字符串
string3 = index.split(')')[-1] #索引[-1]取后面的字符串
string1 = mid.split(' (')[0] #分割mid中的字符串, 分割之后是两个字符串, 索引[0]取前面的字符串
string2 = mid.split(' (')[-1] #分割mid中的字符串, 分割之后是两个字符串, 索引[-1]取后面的字符串
old_name = filepath + '/' + index #得到老文件名
new_name = filepath + '/'+ string1 + string2 + string3 #得到新文件名
os.rename(old_name, new_name) #找到old_name,用new_name将其替换
print('成功!')
Após a modificação do nome do arquivo: