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

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

chanra1n3年前 (2023-05-21)Python4554

为了解决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://www.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...

anaconda打不开的解决方法

anaconda打不开的解决方法

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

Python自动清理错误图片,深度学习训练数据集准备

Python自动清理错误图片,深度学习训练数据集准备

使用python运行from PIL import Image from pathlib import Path import os   path = r'.'  ...

(原创)使用Python对任意网站图片进行爬取,仅用于学习

(原创)使用Python对任意网站图片进行爬取,仅用于学习

import os import time import argparse import requests import re import io from urllib.parse import ...

(原创)使用Python递归获取网页内的所有URL,并进行清洗

(原创)使用Python递归获取网页内的所有URL,并进行清洗

import argparse import time from urllib.parse import urljoin, urlparse from selenium import webdriver...