项目需要,很多中文文件名需要重命名,不然cv2会读不出来,如果全部改为数字,可能会丢失一些信息,所以需要中文转英文,网上有大神已经写好的脚本,根据工程实际进行了修改:

1.增加了去除标点符号的功能,例如很多中文的、()【】全部都可以去掉。

2.优化了之前代码中一些有点重复的内容。

3.可以打开注释,解决一些文件重命名后会重名的问题。

#**********by  zhaobm**********#

import random
import os
import pypinyin
from pypinyin import pinyin, lazy_pinyin


def rename():
    path = "./hongwai"

    filelist = os.listdir(path)  # 该文件夹下所有的文件(包括文件夹)

    for files in filelist:  # 遍历所有文件
        Olddir = os.path.join(path, files)  # 原来的文件路径
        if os.path.isdir(Olddir):  # 如果是文件夹则跳过
            continue

        filename = os.path.splitext(files)[0]  # 获取文件名,取0,是一个字符串
        # 把文件名里的汉字转换成其首字母
        filename1 = pinyin(filename, style=pypinyin.FIRST_LETTER)
        #重新合并为一个字符串
        filename1=''.join(e[0] for e in filename1)
        # 去除标点符号,除了字母和数字,其他都去掉
        filename1=''.join(e for e in filename1 if e.isalnum())

        #如果遇到文件修改后重名的问题,打开这里
        # suf=random.randint(1,5)
        # filename1=filename1+str(suf)

        filetype = os.path.splitext(files)[1]  # 文件扩展名

        Newdir = os.path.join(path, filename1 + filetype)  # 新的文件名
        try:
            os.rename(Olddir, Newdir)  # 重命名
        except:
            pass

if __name__ == '__main__':
    rename()
    print('重命名完成,中文名----》中文名。')

水平不高,凑合看。