根据excel中的数据信息批量修改图片名称

news/2024/7/21 7:05:49 标签: excel, python, 图片重命名, 批量处理

背景说明

        接了一个需求,需要将批量图片按照指定的需求进行重命名,本来的图片是以身份证号进行命名的.jpg文件,现在需要统一命名为班级+姓名+身份证号.png格式的文件。其中,用户提供了一张导出的excel数据表(data.xlsx),数据表对应的信息有四列,分别是班级、序号、姓名和身份证号。

分析

        考虑使用python中的excel相关的操作函数对数据进行处理,然后结合相关的操作来完成。

python获取excel中的行列信息

# -*- coding: utf-8 -*-
"""
Created on Fri Sep 17 20:23:57 2021

@author: Pegasus
"""

import xlrd
book = xlrd.open_workbook('data.xls')
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
ncols = sheet1.ncols
d={}
for i in range(nrows):
    d[sheet1.row_values(i)[3]]=sheet1.row_values(i)[2]
row3_values = sheet1.row_values(2)
print('第3行值',row3_values)
col3_values = sheet1.col_values(2)
print('第3列值',col3_values)
cell_3_3 = sheet1.cell(2,2).value
print('第3行第3列的单元格的值:',cell_3_3)

示例演示

示例内容

# -*- coding: utf-8 -*-
"""
Created on Fri Sep 17 20:10:42 2021

@author: Pegasus
"""

import os
import xlrd
book = xlrd.open_workbook('data.xls')
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
d={}
for i in range(nrows):
    d[sheet1.row_values(i)[3]]=sheet1.row_values(i)[2]

class BatchRename():

    def __init__(self, path):
        self.path = path  

    def rename(self):
        filelist = os.listdir(self.path)  
        for item in filelist:
            ID = item.split('.')[0]
            name = d[ID]
            if item.endswith('.jpg'):  
                src = os.path.join(os.path.abspath(self.path), item)
                print('src',src)
            dst = os.path.join(os.path.abspath(self.path), '' + name+'-'+ID + '.png')  
    
            try:
                os.rename(src, dst)
                print('converting %s to %s ...' % (src, dst))
            except:
                continue

if __name__ == '__main__':
    path = './img'
    demo = BatchRename(path)
    demo.rename()


http://www.niftyadmin.cn/n/5276622.html

相关文章

Java开发框架和中间件面试题(1)

1.什么是Spring框架? Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说的Spring框架就是Spring Framework,它是很多模块的集合,使用这些模块可以很方便的协助我们进行开发。这些模块是核心容器、数据访…

FPGA未解之谜

一.ila一会能加载出波形,一会加载不出波形——在自己做的v7开发板中遇到,其他开发板从未遇到过 1.小梅哥说:可能与硬件jtag连接不稳定导致。

抖音直播间websocket礼物和弹幕消息推送可能出现重复的情况,解决办法

在抖音直播间里,通过websocket收到的礼物消息数据格式如下: {common: {method: WebcastGiftMessage,msgId: 7283420150152942632,roomId: 7283413007005207308,createTime: 1695803662805,isShowMsg: True,describe: 莎***:送给主播 1个入团卡,priority…

设计模式——外观模式(Facade Pattern)

概述 外观模式又称为门面模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。它是一种对象结构型模式。外观模式结构图如下所示…

iOS 收集 SDK 内部 log

为 SDK 设置 log 等级,设置 RCIMClient 的 logLevel 为您期望的,可以在 SDK initWithAppkey 之后设置,比如希望只收集错误 log,那么可以设置为 RC_Log_Level_Error,如果想一般信息、警告信息,错误信息都收集…

Github 2023-12-19开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-19统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Rust项目2非开发语言项目2C#项目1TypeScript项目1 Avalonia: 跨平台UI框架和Avalonia XPF 创建周…

计算机组成原理第4章-(主存储器)【中】

只读存储器ROM分类 对于只读存储器ROM来说,共有三类:“PROM”、“EPROM”、“EEPROM”。 存储器的扩展【重要】 首先,我们要明白存储器为什么要扩展?? 因为单片存储芯片的容量是有限的,很那满足实际的需…

三、W5100S/W5500+RP2040之MicroPython开发<DNS示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 DNS工作过程2.3 优点2.4 应用 3. WIZnet以太网芯片4. DNS解析示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代,MicroPyt…