今天我们来看下如何批量修改名称。这个需求在工作中比较常见的,日常生活中可能也有此类需求,比如,打包下载了一部连续剧或有声读物,每个文件名却被加上了网址、网站名称,还有一些莫名其妙的符号,整得特别长,播放器走马灯滚动标题的话,有时根本看不到已经播到第几回了,改名自然提上日程。动辄200回的有声书,手工修改肯定效率低下,这里我们还是尝试用python解决。
业务需求
还是总公司销售管理岗,昨天批量建立11月各分公司的销售数据文件夹后,忽然觉得每个文件夹后面的“分公司”三个字多余,因为这本来就是保存分公司资料的文件夹,不加也没啥歧义,所以希望删除各文件夹后面的“分公司”三字。注意“202011”里除各分公司文件夹外,还有一些单独的文件,这部分是不能动的。
准备事项
已安装Python3.8或3.9
安装openpyxl第三方库 ※最下方指定改名时会用到
python安装及环境配置可参考 ⇒ kin toms:Python办公自动化–Python环境配置
实现代码
删除文件夹中的“分公司”
import os
path = 'D:/销售数据/202011/'
for file in os.scandir(path):
if file.is_dir() == True:
os.rename(file.path,file.path[:-3])
效果图:文件夹名称删除“分公司”
- 为文件夹名称增加“分公司”三字
把“分公司”三字删除后,Boss第二天便找来问为啥把名字改了,指示不要轻易改变之前的规则,于是还需要把文件夹名称改回去,同样用python,代码如下
import os
path = 'D:/销售数据/202011/'
for file in os.scandir(path):
if file.is_dir() == True:
os.rename(file.path,file.path+'分公司')
效果图:文件夹名称加“分公司”
- 删除文件名称中的数字后缀
这次觉得同文件夹下的几个单蹦文件后面的数字没啥用,希望删除,代码如下
import os
path = 'D:/销售数据/202011/'
for file in os.scandir(path):
if file.is_dir() == False:
os.rename(file.path,file.path[:-3])
效果图:文件名称删后面数字
- 给文件名添加一个后缀999
import os
path = 'D:/销售数据/202011/'
for file in os.scandir(path):
if file.is_dir() == False:
os.rename(file.path,file.path+'999')
效果图:文件名称统一加指定字符
- 指定修改文件夹名称为任意名称
如果给各省区文件夹加个编号,或者希望修改文件夹名称为指定名称,可以用下面的代码
import os
import openpyxl
path = "D:/销售数据/202011/"
wb = openpyxl.load_workbook('D:/改名前后参照表.xlsx')
ws = wb['对照表']
row = ws.max_row
for file in os.scandir(path):
for i in range(2, row + 1):
if file.is_dir() == True and file.name == ws.cell(i,1).value:
os.rename(file.path, path + ws.cell(i, 2).value)
改名参照表
“改名前后参照表”的“对照表”sheet
效果图:修改文件夹名称为指定名称
结语
即便是python语言中,文件/文件夹改名也有多种方法,这里给出的是我常用的方法,大家可以尝试用一下,特别是最后一个指定改名代码,学完基本可应付大部分改名作业了!