【实用工具】文件批量重命名——中文序号转数字序号

最近在整理作业,发现这学期不知道自己怎么想的,竟然用中文序号来给文件命名,导致无法按文件名排序,属实是给自己挖坑了。

文件有好几十个,一个个去重命名费时费力,没办法,只能搓一个小小小程序辅助下了。

使用效果

原文件名 重命名后
第二次作业.pdf 第02次作业.pdf
第十五次作业.jpg 第15次作业.jpg
ABC第十八次某某.xxx ABC第18次某某.xxx

程序源码

是个 Python 程序…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import cn2an
import re
import os
import sys

os.chdir(sys.path[0])
pattern = re.compile(r"^(.*?)第(.+?)次(.*?)\.(.*)$")
filenames = os.listdir(".")
for filename in filenames:
names = re.search(pattern, filename)
if names is None:
continue
# print(names.groups())
front = names.group(1)
an = int(cn2an.cn2an(names.group(2)))
end = names.group(3)
suffix = "." + names.group(4)
new_name = front + "第" + "%02d" % an + "次" + end + suffix
print(filename, "=>", new_name)
os.rename(filename, new_name)

本来想着自己打个表做中文序号的转换,但搜了一下发现已有 cn2an 这个模块,就不造轮子了。

对于文件名的分割,核心是用 re.search 进行分组匹配,用 re.group(n) 获取各个组。

使用方式

  • 根据实际需求修改代码(关键字符是什么、补足多少位等等)

  • py 文件放在与“待重命名的文件”相同的目录下

  • 在终端中运行

完工!