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

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

chanra1n3年前 (2023-05-21)Python4594

为了解决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://world.myfpga.cn/index.php/post/307.html

分享给朋友:

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

math库的使用

math库的使用

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

  索引运算符【】

索引运算符【】

选择字符串的子序列语法【start:finish】        start:子序列开始位置的索引值        finish:子序列结束位置的下一个字符的索引值如果不提供start或者finish,默认start为第一个字符,finish为最后一个字符。例如>>>my_str=...

random库

random库

random()            生成一个[0.0,1.0)之间的随机小数randint(a,b)     生成一个[a,b]之间的整数uniform(a,b)     生成一个[a,b]之间的随机小数对random库的引用方法与math库一样,采用下面两种方式实现:import random...

(原创)使用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...