可以将步骤主要分为三个部分:
- 获取路径下的所有文件
- 条件判断
- 修改文件名
需要用到的模块
- os 模块
函数 | 功能描述 |
---|---|
os.path.exists(path) | 路径存在则返回True,路径损坏返回False |
os.listdir(path) | 返回path指定的文件夹包含的文件或文件夹的名字的列表 |
os.path.splitext(file) | 分割文件名与拓展名 |
os.path.join(path1,path2,str) | 把路径与文件名结合成一个路径 |
os.rename(old,new) | 对文件进行重命名 |
1. 判断路径是否存在,并获取路径下所有文件
# 判断路径是否存在
if not os.path.exists(target_path):
raise Exception('path is not exist!')
# 获取指定路径下的所有文件,存放在一个列表中
filelist = os.listdir(target_path)
路径不存在报错,将所有的文件都存放在一个列表中,用for循环来遍历得到每一个文件名
2.条件判断:只修改同一类型的文件,不修改文件夹
# 分割文件名与拓展名,用索引来提取
filename = os.path.splitext(file)
# 只修改文件,不修改文件夹
if not filename[1]:
continue
# 只修改同一类型文件
if filename[1] == file_type or filename[1] == '.' + file_type:
newfilename = str(count).zfill(3) + filename[1]
3.修改文件名
# 修改名字
old_path = os.path.join(target_path, file)
new_path = os.path.join(target_path, newfilename)
os.rename(old_path, new_path)
效果
完整程序
import os
# 批量修改文件名
def filename_modify(target_path, file_type):
'''
:param target_path: 目标路径
:param file_type: 修改文件类型
:return:
'''
# 判断路径是否存在
if not os.path.exists(target_path):
raise Exception('path is not exist!')
# 获取指定路径下的所有文件,存放在一个列表中
filelist = os.listdir(target_path)
count = 1
for file in filelist:
# 分割文件名与拓展名,用索引来提取
newfilename = file
filename = os.path.splitext(file)
# print('文件名:{}, 拓展名:{}'.format(filename[0], filename[1]))
# 只修改文件,不修改文件夹
if not filename[1]:
continue
# 只修改同一类型文件
if filename[1] == file_type or filename[1] == '.' + file_type:
newfilename = str(count).zfill(3) + filename[1]
count += 1
# 修改名字
old_path = os.path.join(target_path, file)
new_path = os.path.join(target_path, newfilename)
os.rename(old_path, new_path)
if __name__ == '__main__':
path = './test'
filename_modify(path, '.txt')