Loading

Python批量修改文件名

可以将步骤主要分为三个部分:

  1. 获取路径下的所有文件
  2. 条件判断
  3. 修改文件名

需要用到的模块

  • 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')
posted @ 2020-12-13 16:10  紫曜花  阅读(508)  评论(0编辑  收藏  举报