项目需要,很多中文文件名需要重命名,不然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('重命名完成,中文名----》中文名。')
水平不高,凑合看。