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

2023-05-16

文章目录


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

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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐