利用os.rename() 加递归实现,很简单。
该脚本可作为一个小工具,帮助非技术人员如产品经理等快速重命名一个目录下的所有或某些文件。
# encoding: utf-8
import os
import traceback
"""
重命名一个目录下所有(或某些后缀)的文件
"""
# 指定根目录
# 示例: PATH = "/Users/xiaoming/Desktop/demos/tmp"
# PATH = ""
count = 0
def main():
def rename(name):
"""
具体重命名逻辑,修改这个方法即可。这里实现的是去除文件名开头的所有数字
"""
new_name = ''
for s in name:
try:
s = int(s)
except Exception as e:
new_name += s
new_name = new_name.lstrip()
return new_name
def exe(dir_):
filelist = os.listdir(dir_) # 该文件夹下所有的文件(包括文件夹)
for file in filelist: # 遍历所有文件
old_dir = os.path.join(dir_, file) # 原来的文件路径
if os.path.isdir(old_dir): # 如果是文件夹则跳过
exe(old_dir)
filename = os.path.splitext(file)[0] # 文件名
filetype = os.path.splitext(file)[1] # 文件扩展名
if filetype not in [ '.pdf']: # 这里写过滤条件,如只修改后缀为 pdf的文件。如不需要过滤直接注释掉
continue
new_name = rename(filename)
if new_name == filename:
continue
new_dir = os.path.join(dir_, new_name+filetype)
os.rename(old_dir, new_dir) # 重命名
global count
count += 1
print(u'第 %s 个文件,修改成功,%s -> %s ...' % (count, filename+filetype, new_name+filetype))
global PATH
print(u'====== 开始执行,目录: %s ======\n' % PATH)
PATH = PATH.rstrip('/')
if not os.path.exists(PATH):
print(u"错误,目录 %s 不存在!" % PATH)
return
exe(PATH)
if count == 0:
print(u"未找到需要重命名的文件。")
if __name__ == "__main__":
main()
print(u"\n====== 执行完毕。======")
将上述代码保存为如 Rename.py,修改其中的PATH为需要重命名的根目录,然后直接在控制台执行即可:python2 Rename.py