通过Python来批量重命名图片或者其他文件名称

功能介绍

我在工作中需要把工作的内容截图下来保存,运用QQ或者微信的截图,图片要和图片内容对应起来,而图片对应的信息名称就在excel表格中,所以编写了程序来给图片命名。

实现方法

  1. 建立文件夹,每个文件夹下保存图片和excel表格;
  2. 图片初始命名的按照excel中图片信息的顺序来命名(如:1.png、2.png、3.png . . . . . . )。
  3. python需要调用re、xlrd、os库,来读取excel数据,得到当前目录文件的列表,通过re来匹配各个文件下excel的绝对路径。

实现效果图

图片未命名图片未命名前
表格数据
程序命名后
图片重命名

具体代码

#!/usr/bin/python3
# encoding: utf-8
"""
@File    : main.py
@Time    : 2019/9/5 18:24
@Author  : Chun
@Software: Visual Studio 2017
@Description: 
"""
import os
import xlrd
import re

# 参数配置
excel_filename = 'pic_name.xlsx'
picture_type = ['png', 'jpg']

def rename(path):
    files = os.listdir(path)
    global excel_filename
    
    for file in files:        
        file_name = os.path.join(path,file)
        # 监测是否为文件夹如果是则递归重命名这个文件夹内的文件名
        if os.path.isdir(file_name):
            
            #匹配excel文件路劲
            pattern = re.compile(r'\\')
            excel_pos = file_name + '\\' + 'pic_name.xlsx'
            excel_filename = re.sub(pattern , '/' , excel_pos , 0 )
            
            #递归
            rename(file_name)
            continue
        # 操作excel
        excel = xlrd.open_workbook(excel_filename)
        sheet = excel.sheet_by_index(0)
        names = sheet.col_values(0)
        f = file.split('.')
        file_type = file.split('.')[1]
        
        if file_type in picture_type:
            num = eval(f[0])
            try:
                new_dir = os.path.join(path,str(num) + '_' + names[num - 1] + '.' + file_type)
                os.rename(file_name, new_dir)
            except Exception as e:
                print(e)
rename(os.path.dirname(__file__))
print('重命名结束')
input('按任意键退出...')

代码描述

  1. 运用递归和正则去找出文件夹,和对应文件夹下的excel表格
  2. 能够重命名python所在目录下,和子文件夹下的所有图片名称
  3. 修改后也可以重命名其他文件的名字
  4. 目录下的excel表格名称必须为“pic_name.xlsx”
  5. py文件当前目录也需一个excel表格,因为没有excel,会有读不到excel表格出错停止运行。
  6. 也可以打开其他名称的excel表格,需要修改下代码。

如果有好的建议或者升级希望大家分享下经验

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值