最近、ターゲット検出のためにニューラル ネットワークをトレーニングする場合、次のファイル名の括弧と括弧の前のスペースを一緒に削除する必要があることがわかりました。
以下の画像の保存アドレスは D:\code\new\JPEGImages です
アイデア: 画像名の先頭の桁数が異なり、画像名の末尾が (*).jpg であるため、スライスをカウントダウンすることを検討してください。まずファイル名を文字「)」で 2 つの文字列に切り分け、次に前の文字列を「(」で 2 つの文字列に切り分け、最後に 3 つの文字列を追加して元のファイル名を置き換えます。
例: たとえば、1_220709 (1).jpg を変更します。
まず文字 ")" を1_220709 (1と.jpg )に分割し、次に前の文字列を1_220709と1から "(" に分割し、最後に 3 つを加算して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('成功!')
ファイル名の変更後: