文章目录
做深度学习算法收集数据时,来源各种各样,导至文件名混有各种特殊符号,所在这里有一段代码,可以把文件名进行处理,只保留数字、字母和下划线,然后对文件进行重命名。
import os
import re
import random
import string
from glob import glob
from tqdm import tqdm
def convert_filename(file_lists):
"""_summary_
Args:
file_lists (list ): file abs or relative path list
"""
for file in tqdm(file_lists):
basepath = os.path.dirname(file)
basename = os.path.basename(file)
name,suffix = os.path.splitext(basename)
if len(re.findall('[\W\u4e00-\u9fa5]',name)): #中文及除数字字母下划线的符号
newname = re.sub('[\W\u4e00-\u9fa5]','',name) # 这些特殊符号全部被删除
if len(newname)==0: #所有符号全部都是特殊的,除去之后没有了,那就随机生成一个
length=random.randint(3,10)
letters = string.ascii_lowercase
newname = ''.join(random.choice(letters) for i in range(length))
newfilename=newname+suffix
if newfilename.isupper(): #把文件名及后缀全部改成写,在图片中有jpg,又有JPG直的烦
newfilename=newfilename.lower()
print(f"old:{basename} new:{newfilename}")
newpath = os.path.join(basepath,newfilename)
os.rename(file,newpath)
else:
continue
fs = glob("data/*.jpg")
convert_filename(fs)