python 读取excel 批量 重命名文件夹
python 读取excel 批量重命名 文件夹
- 需求
- 使用的库
- 旧颜和新欢
- 过程
- renamefile.py
- operateExcel.py
- 最后打包生成exe
需求
接到老婆大人说帮同事写一个 有个批量重命名 文件的功能,问我能不能行。
嗯? 虽然我是个测试, 但是这不是很简单么,然后霹(复)雳(制)啪(黏)啦(贴)的写了一个。
嗯? 这个样子不行,要根据文件名那个 人名来对应的
嗯?要从excel中 先查找 那个人名对应的编号,再把编号 和人名组合到文件夹名称中
嗯?同事没有相应的python环境, 你得远程或者啥的帮助她
嗯?¥……&***((
使用的库
- xlrd
- pyinstaller
旧颜和新欢
我们的目的就是读取excel中的 姓名和 编号, 然后去 查找目录中 文件夹名称 包含 一样姓名的那个, 把这个文件夹名字 给替换成这样的组合: 编号-姓名
当然了,为了降低难度,把姓名重复的功能给忽略了
excel 是这样的:
以前是这样的
要的效果
过程
renamefile.py
为了给 不接触代码的大佬们使用,得写些乱七八糟的提示 和输出
#coding=utf-8
import os
import re
from operateExcel import ExcelUtildef rename_file(filepath, excelpath, sheetname):data = ExcelUtil(excelpath, sheetname).dict_data()# print(data)print("excel 编号长度: {}".format(len(data)))print("切换到目录: {}".format(filepath))os.chdir(filepath)print("开始重命名\n")if not os.path.exists(filepath) or not os.path.isdir(filepath):print("文件目录不存在 或者 文件所给的路径不是文件夹")os._exit(1)filenames = os.listdir(filepath)# i是个计数器i = 0for fn in filenames:if not os.path.isdir(fn):print("{:15s}不是文件夹,跳过...".format(fn))continue# 这两个只有是 修改 文件名的使用才有用,因为文件夹没有后缀# # ===文件名前缀===# file_name_tmp = os.path.splitext(fn)[0]# # ===文件名后缀===# file_ext_name = os.path.splitext(fn)[1]file_name_tmp = fn# 找到中文名,取找到的第一个,忽略其他情况fn_tmp_name = re.compile(r'[\u4e00-\u9fa5]+').findall(file_name_tmp)if len(fn_tmp_name) == 0:print("{:15s} 目录没有找到中文名".format(fn))continuename_key = fn_tmp_name[0]if name_key in data:newname = str(data[name_key]) + "-" + name_keyprint("{:15s}重命名为---->{}".format(fn, newname))# 判断下新生成的 文件夹是否以及在 当前目录存在了,如果有,那就不动if os.path.exists(newname):print("{:15s}已经存在,请检查,跳过...".format(newname))continue# rename 中path已经在当前路径下, 则参数直接使用 文件名就行os.rename(fn, newname)i += 1else:print("{:15s} 目录没有找到对应中文名".format(fn))continueprint("\n重命名结束,成功 {} 个,请检查。".format(i))if __name__ == '__main__':print("""使用说明:
请输入需要重命名文件夹 所在目录的上一级目录:格式为: D:\\示例\\分公司1-5\\
请输入excel所在完整路径:格式为: D:\\示例\\大区汇总表(20年)(2).xlsx
请输入 excel sheet页名字,不输入默认Sheet1:格式为: Sheet1""")file_path = input("请输入需要重命名文件夹 所在目录的上一级目录: ")excel_path = input("请输入excel所在完整路径: ")sheet_name = input("请输入 excel sheet页名字: ")sheet_name = sheet_name.strip()if len(file_path) == 0 or file_path is None:# 当然了, 如果 有几个路径需要修改,放入[] 中, 然后循环就行file_path = "D:\\needtorename\\示例\\杭州分公司1-5\\"if len(excel_path) == 0 or excel_path is None:excel_path = "D:\\示例\\大区汇总表(20年)(2).xlsx"if len(sheet_name) == 0 or sheet_name is None:sheet_name = "Sheet1"try:rename_file(file_path, excel_path, sheet_name)except Exception as e:print("重命名失败,报错{}".format(e))input("任意按键结束: ")os._exit(1)input("任意按键结束: ")os._exit(0)
operateExcel.py
处理excel的 得走一个
# coding=utf-8
import os
import xlrdclass ExcelUtil():def __init__(self, excelpath, sheetname="Sheet1"):self.data = xlrd.open_workbook(excelpath)self.table = self.data.sheet_by_name(sheetname)# 获取第二行作为key值self.keys = self.table.row_values(1)# 获取总行数self.rowNum = self.table.nrows# 获取总列数self.colNum = self.table.ncolsdef dict_data(self):if self.rowNum <= 3:print("总行数小于3")else:r = []s = {}j = 3for i in list(range(self.rowNum - 3)):values = self.table.row_values(j)r.append(values)# 由于excel列固定,找到第4行的编号,第5行的名称,放入字典中file_id = int(values[4])file_name = values[5]s[file_name] = file_idj += 1return sif __name__ == "__main__":print(os.getcwd())filepath = "D:\\示例\\大区汇总表(20年).xlsx"sheetName = "Sheet1"data = ExcelUtil(filepath, sheetName)print(data.dict_data())
最后打包生成exe
打完收工!
python 读取excel 批量 重命名文件夹相关推荐
- 怎么批量重命名文件夹123456
电脑里的文件夹越来越多,至少有上百个.针对同一个项目下的文件夹,我们在做整理归档的时候需要将文件夹批量重命名并排序为123456.比如:双12活动数据1.双12活动数据2等.这样我们在后期对整个项目的 ...
- 利用EXCEL批量重命名文件
今天遇到了需要重命名多个文件的情况,在网上查找后发现两种方法还比较有效,在此做下记录. 1.软件 利用现有的软件进行批量处理,这里使用的软件是 advancedrenamer 官网下载地址,使用起来很 ...
- 图片批处理——关于批量重命名文件夹内图片不改变原来在文件夹内的顺序(适用于基于ref数据集处理的过程)
在网上找了好久,但是保证顺序的方法都是使用**sort()**函数实现的,并不能保证原来图片在文件夹内的顺序不变(特殊需要,需要某种对应), 这种方法见 按顺序对图片批量重命名,sort() 之后被逼 ...
- python图片批量重命名文件夹_python3_learn 实现文件夹内批量对图片重命名
初衷 练习Python,提高动手能力. 珍藏的壁纸文件夹名命有点乱. 可以学习下一些基础的库 开始(.jpg,无筛选) First 首先找到OS库,寻找可以遍历文件名的.找到了OS.walk() os ...
- 如何批量重命名文件夹,自定义修改文件夹的名称
有些小伙伴还不知道如何批量修改文件夹名称,就只能采用一个一个修改的方法,这种发光法的速度是最慢的,需要消耗大量的时间,小编非常的不推荐,今天教大家一个新的改名技巧,自定义批量修改文件夹的名称. 第一步 ...
- ubuntu 命令行批量重命名文件夹
ubuntu 命令行批量rename文件夹 文件夹的命名有错(e.g., 1234./)由于有这个点(.)导致这些文件夹不能移动,因此想批量改文件夹名字.觉得理论上一行命令行是可以解决的,但搜索后发现 ...
- php文件夹操作:读取文件夹、批量重命名文件
以读取从网上下载的评书解压后的文件夹为例,并批量重命名 文件夹内容如下,现在使用php读取这个文件夹里面的文件,并批量重命名为"隋唐演义+序号.mp3"的格式: <?php ...
- Excel如何批量重命名文件
今天跟大家分享一下如何利用Excel批量重命名文件 1.首先打开Excel软件 2.然后我们点击下图选项 3.依次点击[工作表],[重命名文件] 4.单击[选择文件],选择要处理的文件 5.然后在[新 ...
- 电脑文件夹改名快速重命名文件夹名的方法
文件夹整理时,需要重命名,手动重命名到手酸也完成不了,有没有批量重命名方法,小编觉得肯定是有的,所有下面为大家分享批量重命名文件夹名的技巧,一起来看看,说不定以后你整理文件夹时用的上.下面一起来了解一 ...
最新文章
- 二叉树 2.0 -- 非递归遍历
- webkit内核 css,纯CSS改变webkit内核浏览器的滚动条样式
- drbd配置文件详解
- 个人或结对项目 - 动态显示程序运算的过程
- linux安装常用命令工具包wget,cmake等
- 《2015中国移动应用性能管理白皮书》欢迎来看
- nginx负载均衡 加权轮询和ip_hash
- dqn在训练过程中loss越来越大_强化学习笔记:OpenAI Gym+DQN+Tensorflow2实现
- FLAT:又快又好的中文命名实体识别模型
- java 算法递归案例_JAVA 几个递归算法实例
- 如何优雅地给同事提“改进性建议”
- 基于51单片机的指纹考勤器
- 重归理性 国内SOA平台期待价值提升
- 概率机器人书 电子版
- 专题分纲目录 思维导图
- design pattern scard
- 14道初级程序员进阶中高级的必经环节
- Unity编码解析以及常用转换
- js实现touch移动触屏滑动事件
- 个人训练赛第二十场:对撞