python 批量修改图片的名字

情况1:数据都在一个文件夹内

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
代码:

import os
import cv2 as cv

image_path = 'C:/Users/huan4/Desktop/Python/TensorFlow/train_ourself_data/01_classification_network/data/train/'

for file in os.listdir(image_path):
    name = file.split(sep='_')
    if name[0] == '0':
        new_image = image_path + 'airplane' + '_' + name[1]
        scr = cv.imread(image_path + file)
        cv.imwrite(new_image, scr)
    elif name[0] == '1':
        new_image = image_path + 'car' + '_' + name[1]
        scr = cv.imread(image_path + file)
        cv.imwrite(new_image, scr)
    elif name[0] == '2':
        new_image = image_path + 'bird' + '_' + name[1]
        scr = cv.imread(image_path + file)
        cv.imwrite(new_image, scr)

情况二:不同类别的数据在不同的文件夹内

在这里插入图片描述
在这里插入图片描述
修改后:
在这里插入图片描述

import os
import cv2 as cv

data_path = 'C:/Users/huan4/Desktop/Python/TensorFlow/train_ourself_data/cat_and_dog/data/'
save_path = 'C:/Users/huan4/Desktop/Python/TensorFlow/train_ourself_data/cat_and_dog/train/'

for file in os.listdir(data_path):
    image_file_path = data_path + file + '/'
    i = 0
    for image_name in os.listdir(image_file_path):
        scr = cv.imread(image_file_path + image_name)
        dst = cv.resize(scr, (600, 800), interpolation=cv.INTER_CUBIC)  #如果图片太大,可以使用cv.resize成自己想要的大小
        new_image_name = save_path + file + '_' + str(i) + '.jpg'
        print(new_image_name)
        cv.imwrite(new_image_name, dst)
        i += 1
Python中,如果你想要批量修改变量名,可以使用字典推导式、`globals()`函数或者`exec()`函数。但是需要注意的是,直接修改全局变量可能会导致意外的结果,因为它会影响到程序的其他部分。 以下是三种常见方法: 1. **字典推导式**(适用于局部作用域): ```python old_names = {'old_var': 'new_var', 'another_old': 'new_one'} new_scope = {new_name: old_scope[new_name] for new_name, old_name in old_names.items()} # 然后你可以创建一个新的局部作用域,并将新的变量名映射到旧值上 locals().update(new_scope) ``` 2. **`globals()`函数**(适用于全局作用域,需谨慎): ```python old_names = {'old_var': 'new_var'} # 使用实际的键值对替换 for old_name, new_name in old_names.items(): globals()[new_name] = globals().pop(old_name) # 需要注意这是改变全局命名空间的操作 # 这种方法会直接在当前模块中修改全局变量,可能导致意想不到的问题 ``` 3. **`exec()`函数**(同样用于全局作用域): ```python old_names = {'old_var': 'new_var'} # 对应的代码字符串 code = ', '.join([f'{old_name} = {new_name}' for old_name, new_name in old_names.items()]) exec(code) # `exec()`会动态执行字符串中的Python代码,同样需要小心其潜在风险 ``` 在操作前,请确保你了解这些操作的影响,特别是在处理全局变量时。同时,避免在生产环境中随意修改已有的变量名称,除非你知道你在做什么。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值