0
点赞
收藏
分享

微信扫一扫

Python自动化:按文件后缀分类移动并批量修改图片文件名称

一、前言

source_dir文件夹下有若干文件,看起来相当乱,源文件夹示例如下:

Python自动化:按文件后缀分类移动并批量修改图片文件名称_文件管理

现在我们准备做以下几件事情:

1.将所有文件按照后缀名称分类

2.新建文件后缀名称的文件夹,新建图片文件夹

3.根据文件后缀名称移动到对应的文件夹,图片移动到图片文件夹

4.修改图片文件夹下所有文件的名称

试想我们人为手动处理的话,是很繁琐的,并且容易出错,所以这里使用Python来自动化处理

二、步骤

遍历提取文件后缀

import os

from Time_Count import time_count


@time_count
def arrange_file_by_ext(path):
    # 【遍历提取文件后缀】
    for filename in os.listdir(path):  # 遍历文件
        file_path = path + os.sep + filename  # 文件路径
        if os.path.isfile(file_path):  # 若是文件
            file_extension = filename.split('.')[-1]  # 提取文件后缀
            print(f"{file_extension}  {type(file_extension)}")


if __name__ == "__main__":
    dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
    arrange_file_by_ext(dir_path)

运行结果:

Python自动化:按文件后缀分类移动并批量修改图片文件名称_文件管理_02

定义目标文件夹

import os

from Time_Count import time_count


@time_count
def arrange_file_by_ext(path):
    # 【遍历提取文件后缀】
    for filename in os.listdir(path):  # 遍历文件
        file_path = path + os.sep + filename  # 文件路径
        if os.path.isfile(file_path):  # 若是文件
            file_extension = filename.split('.')[-1]  # 提取文件后缀

            # 【定义目标文件夹】
            if file_extension in ['jpg', 'jpeg', 'png']:  # 若是图片文件
                destination_directory = path + os.sep + 'img'  # 定义目标文件夹(命名为img)
            else:  # 若不是图片文件
                destination_directory = path + os.sep + file_extension  # 定义目标文件夹(命名为文件后缀)
            print(f"{filename}  ====>  {destination_directory}")


if __name__ == "__main__":
    dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
    arrange_file_by_ext(dir_path)

运行结果:

Python自动化:按文件后缀分类移动并批量修改图片文件名称_文件管理_03

移动到目标文件夹

import os
import shutil

from Time_Count import time_count


@time_count
def arrange_file_by_ext(path):
    # 【遍历提取文件后缀】
    for filename in os.listdir(path):  # 遍历文件
        file_path = path + os.sep + filename  # 文件路径
        if os.path.isfile(file_path):  # 若是文件
            file_extension = filename.split('.')[-1]  # 提取文件后缀

            # 【定义目标文件夹】
            if file_extension in ['jpg', 'jpeg', 'png']:  # 若是图片文件
                destination_directory = path + os.sep + 'img'  # 定义目标文件夹(命名为img)
            else:  # 若不是图片文件
                destination_directory = path + os.sep + file_extension  # 定义目标文件夹(命名为文件后缀)

            # 【移动到目标文件夹】
            if not os.path.exists(destination_directory):  # 若目标文件夹不存在
                os.makedirs(destination_directory)  # 创建目标文件夹
            shutil.move(file_path, destination_directory + os.sep + filename)  # 将文件移动到目标文件夹


if __name__ == "__main__":
    dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
    arrange_file_by_ext(dir_path)

运行结果:

Python自动化:按文件后缀分类移动并批量修改图片文件名称_文件管理_04

修改图片文件名称

import os
import shutil

from Time_Count import time_count


@time_count
def arrange_file_by_ext(path):
    num = 1  # 定义第一张图片文件名称
    # 【遍历提取文件后缀】
    for filename in os.listdir(path):  # 遍历文件
        file_path = path + os.sep + filename  # 文件路径
        if os.path.isfile(file_path):  # 若是文件
            file_extension = filename.split('.')[-1]  # 提取文件后缀

            # 【定义目标文件夹】
            if file_extension in ['jpg', 'jpeg', 'png']:  # 若是图片文件
                destination_directory = path + os.sep + 'img'  # 定义目标文件夹(命名为img)
            else:  # 若不是图片文件
                destination_directory = path + os.sep + file_extension  # 定义目标文件夹(命名为文件后缀)

            # 【移动到目标文件夹】
            if not os.path.exists(destination_directory):  # 若目标文件夹不存在
                os.makedirs(destination_directory)  # 创建目标文件夹
            shutil.move(file_path, destination_directory + os.sep + filename)  # 将文件移动到目标文件夹

            # 【修改图片文件名称】
            if file_extension in ['jpg', 'jpeg', 'png']:  # 若是图片文件
                old_path = destination_directory + os.sep + filename  # 原文件路径
                new_path = destination_directory + os.sep + f"{str(num)}.{file_extension}"  # 新文件路径
                os.rename(old_path, new_path)  # 重命名文件
                num += 1  # 图片名称自+1


if __name__ == "__main__":
    dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
    arrange_file_by_ext(dir_path)

运行结果:

Python自动化:按文件后缀分类移动并批量修改图片文件名称_自动化_05

三、总结

1.只使用Python自带的库,无需安装下载第三方库

2.文件数量大时运行耗时未进行测试

3.不能用于文件夹下的子文件夹

举报

相关推荐

0 条评论