当前位置:首页 > Python > 正文内容

(原创)使用Python自动对子文件夹中的图片文件进行重命名

chanra1n12个月前 (05-21)Python2374

为了解决Python深度学习的时候,经常遇到的文件名问题

import os

# 获取指定目录下的所有子文件夹
def get_subfolders(path):
    subfolders = []
    try:
        for item in os.listdir(path):
            item_path = os.path.join(path, item)
            if os.path.isdir(item_path):
                subfolders.append(item_path)
    except FileNotFoundError:
        print(f"Error: path {path} not found.")
    return subfolders

# 重命名指定目录下的所有子文件夹中的图片文件
def rename_image_files_in_subfolders(path):
    subfolders = get_subfolders(path)
    for subfolder in subfolders:
        subfolder_name = os.path.basename(subfolder)
        try:
            for index, file_name in enumerate(os.listdir(subfolder)):
                file_path = os.path.join(subfolder, file_name)
                if not os.path.isfile(file_path):
                    continue
                file_ext = os.path.splitext(file_name)[1].lower()
                if file_ext not in ['.jpg', '.jpeg', '.png', '.bmp', '.gif','.jpe']:  # 仅处理常见的图片格式
                    continue
                new_file_name = f"{subfolder_name}_{index+1}{file_ext}"
                new_file_path = os.path.join(subfolder, new_file_name)
                os.rename(file_path, new_file_path)
        except PermissionError:
            print(f"Error: failed to rename files in subfolder {subfolder}.")
            continue

# 测试
if __name__ == '__main__':
    path = '.'
    rename_image_files_in_subfolders(path)

这个程序中,get_subfolders函数和rename_image_files_in_subfolders函数与之前的实现类似。但是,为了处理不仅是jpg格式的图片文件,我对rename_files_in_subfolders函数进行了修改。首先,对于每个文件,使用os.path.splitext函数获取文件名和文件扩展名,然后将扩展名转化为小写格式。接着,判断文件扩展名是否在常见的图片格式中,如果不在则跳过该文件。最后,将新的文件名设置为"{子文件夹名称}_{序号}{文件扩展名}"的格式,将原文件名修改为新文件名。

由于这个程序需要处理多种文件格式,因此可能会比之前的实现慢一些。如果程序的性能成为问题,可以考虑使用多线程或异步IO等技术来加速处理过程。

扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/307.html

分享给朋友:

“(原创)使用Python自动对子文件夹中的图片文件进行重命名” 的相关文章

Python关于turtle的函数名

Python关于turtle的函数名

turtle.forward(distance)                   向当前画笔方向移动distance像素长度turtle.backward(distance)              向当前画笔相反方向移动distance像素长度turtle.right(degree)    ...

math库的使用

math库的使用

math库包括4个数学常数math.pi      圆周率math.e       自然对数math.inf     正无穷大,负无穷大为-math.infmath.nan     非浮点数标记math库常用函数math.cell(x)      向上取整,返回不小于x的最小整数math.facto...

for循环

for循环

range()函数range(start,end,step)range()函数返回一个可迭代对象(可理解为一个序列,序列中的数包括start,不包括end)例如range(1,101),返回1-100的序列。range(101),范围0-100的序列。range(1,100,2),返回1,3,5.....

列表作为函数参数

列表作为函数参数

列表作为函数参数,函数中可以修改原列表def multiply(values,factor):     for i in range(len(values)):        values[i]*=factor          aList=[1,2,3,4,5]  multiply(aL...

anaconda打不开的解决方法

anaconda打不开的解决方法

报错内容Navigator Error An unexpected error occurred on Navigator start-up Report Please report this ...

体温打卡python 可通过账户密码获取对应ID号

体温打卡python 可通过账户密码获取对应ID号

仅用于学习和测试,请勿自动填报或者干任何违法的事情import datetime import hashlib import random from urllib.parse import quote import req...