文件夹名称有汉字一二三四五等,如何按数字大小顺序排列?


(资料图片)

写了个python脚本,实现大小写转换,以后可以根据需求添加更多的批量重命名函数进去.

有python环境的同学可以复制代码直接运行,没有python环境的同学我也打包了一封exe文件,双击即可运行。exe获取方式在评论区。

举个例子,下面图片中的ppt,即使按照名称排列,由于是一二三四命名的,只能按照拼音排序,并不能在系统中像阿拉伯数字1234一样按照数字排序。

运行python脚本,粘贴进去文件夹所在目录

批量重命名完成,这下就整齐多了

代码如下,需要有python环境才可运行:

-*- coding: utf-8 -*-本程序用于重命名文件,适配多级目录,已经实现的功能有:1.文件夹以及文件中的一二三四五...改写成阿拉伯数字12345import os,re 大小数字替换函数,100以内def BigNum2SmallNum(filename):    bignum=re.findall([一二三四五六七八九十]+,filename)    num = ""     没有数字的字符串处理,不然会下标报错    ifbignum==[]:        return filename    str_num = bignum[0]num_dict= {"一": "1", "二": "2", "三": "3", "四": "4", "五": "5", "六": "6", "七": "7", "八": "8", "九": "9", "十": ""}    if str_num[0] == "十" and len(str_num) == 1:        num_dict["十"] = "10"    if str_num[0] == "十" and len(str_num) == 2:        num_dict["十"] = "1"    if str_num[0] != "十" and len(str_num) == 2:        num_dict["十"] = "0"        for str in str_num:        for key in num_dict:            if key == str:                num += num_dict[key]                break    pattern = bignum[0]定义分隔符,有个问题,只能处理第一个数字    result = re.split(pattern, filename)  以pattern的值 分割字符串    result.insert(1,num)    all=.join(result)合并文件名return all 返回文件名print(本程序可对内嵌套多级文件夹的路径下文件批量重命名)folder = input("请粘贴入待改名文件路径(如C:\Users\UserName\Desktop):")  通过用户粘贴入待改名文件路径if os.path.exists(folder):  判断该路径是否真实存在    dirs_list = []  建立一个列表存放该文件夹及包含的所有嵌套及多重嵌套的子文件夹名    for root, dirs, flies in os.walk(folder, topdown=False):  输出目录树中的根目录,文件夹名,文件名,后续遍历for name in dirs:            if (name != []):  去除无效目录(最里层没有下级目录)                dirs_list.append(os.path.join(root, name))  循环加入所有嵌套及多重嵌套的带路径子文件夹名    dirs_list.append(folder)    os.chdir(folder)  切换OS工作目录到文件所在位置    修改所有文件名字    for each_dirs in dirs_list:  遍历所有文件        files_list = os.listdir(each_dirs)   生成待改名文件列表        os.chdir(each_dirs)   切换OS工作目录到文件所在位置        for filename in files_list:            newfilename=BigNum2SmallNum(filename)大小写切换函数if filename!=newfilename:防止相    同文件名报错                os.rename(filename,newfilename)改名                print(filename,->,newfilename)    print("n处理完毕!")else:  如果是无效路径则跳过    print(路径输入错误或不存在)

参考:

使用python3快速将一百以内的中文数字(一二三四...)转换为int类型的数字(1234...)_猫哥的鱼库-CSDN博客​blog.csdn.net/qq_26870933/article/details/90575993Python对多层嵌套文件夹中的所有文件批量重命名_weixin_44806582的博客-CSDN博客​blog.csdn.net/weixin_44806582/article/details/106441256