去掉文件名中的特殊符号及中文

文章目录


做深度学习算法收集数据时,来源各种各样,导至文件名混有各种特殊符号,所在这里有一段代码,可以把文件名进行处理,只保留数字、字母和下划线,然后对文件进行重命名。

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)

你可能感兴趣的:(杂项,python,去特殊符号)