最近在训练目标检测的神经网络,发现需要把以下的文件名中的括号和括号前面的空格一起去掉。
以下图片存放地址是D:\code\new\JPEGImages
思路:因为图片名称前面的数字位数不同,而后面都是(*).jpg结尾,所以考虑倒数着切片。先通过字符")"把文件名切成两个字符串,之后再把前面的字符串通过" ("切成两个字符串,最后再把三个字符串相加并替换原来的文件名。
举例:比如说修改1_220709 (1).jpg
先通过字符")"分成1_220709 (1和.jpg,然后通过" ("把前面的字符串分成1_220709和1,最后把三者相加得到1_2207091.jpg
具体看代码实现:
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('成功!')
文件名修改之后: