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 批量 重命名文件夹相关推荐

  1. 怎么批量重命名文件夹123456

    电脑里的文件夹越来越多,至少有上百个.针对同一个项目下的文件夹,我们在做整理归档的时候需要将文件夹批量重命名并排序为123456.比如:双12活动数据1.双12活动数据2等.这样我们在后期对整个项目的 ...

  2. 利用EXCEL批量重命名文件

    今天遇到了需要重命名多个文件的情况,在网上查找后发现两种方法还比较有效,在此做下记录. 1.软件 利用现有的软件进行批量处理,这里使用的软件是 advancedrenamer 官网下载地址,使用起来很 ...

  3. 图片批处理——关于批量重命名文件夹内图片不改变原来在文件夹内的顺序(适用于基于ref数据集处理的过程)

    在网上找了好久,但是保证顺序的方法都是使用**sort()**函数实现的,并不能保证原来图片在文件夹内的顺序不变(特殊需要,需要某种对应), 这种方法见 按顺序对图片批量重命名,sort() 之后被逼 ...

  4. python图片批量重命名文件夹_python3_learn 实现文件夹内批量对图片重命名

    初衷 练习Python,提高动手能力. 珍藏的壁纸文件夹名命有点乱. 可以学习下一些基础的库 开始(.jpg,无筛选) First 首先找到OS库,寻找可以遍历文件名的.找到了OS.walk() os ...

  5. 如何批量重命名文件夹,自定义修改文件夹的名称

    有些小伙伴还不知道如何批量修改文件夹名称,就只能采用一个一个修改的方法,这种发光法的速度是最慢的,需要消耗大量的时间,小编非常的不推荐,今天教大家一个新的改名技巧,自定义批量修改文件夹的名称. 第一步 ...

  6. ubuntu 命令行批量重命名文件夹

    ubuntu 命令行批量rename文件夹 文件夹的命名有错(e.g., 1234./)由于有这个点(.)导致这些文件夹不能移动,因此想批量改文件夹名字.觉得理论上一行命令行是可以解决的,但搜索后发现 ...

  7. php文件夹操作:读取文件夹、批量重命名文件

    以读取从网上下载的评书解压后的文件夹为例,并批量重命名 文件夹内容如下,现在使用php读取这个文件夹里面的文件,并批量重命名为"隋唐演义+序号.mp3"的格式: <?php ...

  8. Excel如何批量重命名文件

    今天跟大家分享一下如何利用Excel批量重命名文件 1.首先打开Excel软件 2.然后我们点击下图选项 3.依次点击[工作表],[重命名文件] 4.单击[选择文件],选择要处理的文件 5.然后在[新 ...

  9. 电脑文件夹改名快速重命名文件夹名的方法

    文件夹整理时,需要重命名,手动重命名到手酸也完成不了,有没有批量重命名方法,小编觉得肯定是有的,所有下面为大家分享批量重命名文件夹名的技巧,一起来看看,说不定以后你整理文件夹时用的上.下面一起来了解一 ...

最新文章

  1. 二叉树 2.0 -- 非递归遍历
  2. webkit内核 css,纯CSS改变webkit内核浏览器的滚动条样式
  3. drbd配置文件详解
  4. 个人或结对项目 - 动态显示程序运算的过程
  5. linux安装常用命令工具包wget,cmake等
  6. 《2015中国移动应用性能管理白皮书》欢迎来看
  7. nginx负载均衡 加权轮询和ip_hash
  8. dqn在训练过程中loss越来越大_强化学习笔记:OpenAI Gym+DQN+Tensorflow2实现
  9. FLAT:又快又好的中文命名实体识别模型
  10. java 算法递归案例_JAVA 几个递归算法实例
  11. 如何优雅地给同事提“改进性建议”
  12. 基于51单片机的指纹考勤器
  13. 重归理性 国内SOA平台期待价值提升
  14. 概率机器人书 电子版
  15. 专题分纲目录 思维导图
  16. design pattern scard
  17. 14道初级程序员进阶中高级的必经环节
  18. Unity编码解析以及常用转换
  19. js实现touch移动触屏滑动事件
  20. 个人训练赛第二十场:对撞

热门文章

  1. java基于微信小程序的竞赛报名管理系统
  2. esp8266-01s加人体热释红外探头做的手机远程报警器
  3. centos docker环境下如何清理磁盘空间
  4. 裸辞3个月没工作,害怕面试,害怕HR问我的问题,怎么办?
  5. 三星Smart Home平台来了,这次与苹果无关
  6. 国内知名机器人公司盘点
  7. 从《金瓶梅》看到的历史
  8. 【无标题】Android studio连接第三方模拟器全解
  9. 独家数据 深度解析|Axie Infinity--GameFi社区收益达到150亿美元之路【第二期】
  10. jass 添加资源的代码