功能介绍
我在工作中需要把工作的内容截图下来保存,运用QQ或者微信的截图,图片要和图片内容对应起来,而图片对应的信息名称就在excel表格中,所以编写了程序来给图片命名。
实现方法
- 建立文件夹,每个文件夹下保存图片和excel表格;
- 图片初始命名的按照excel中图片信息的顺序来命名(如:1.png、2.png、3.png . . . . . . )。
- 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('按任意键退出...')
代码描述
- 运用递归和正则去找出文件夹,和对应文件夹下的excel表格
- 能够重命名python所在目录下,和子文件夹下的所有图片名称
- 修改后也可以重命名其他文件的名字
- 目录下的excel表格名称必须为“pic_name.xlsx”
- py文件当前目录也需一个excel表格,因为没有excel,会有读不到excel表格出错停止运行。
- 也可以打开其他名称的excel表格,需要修改下代码。