快速修改大量文件的名称:Python代码实现

2024-04-08 14:25:09 10点赞 99收藏 18评论

  本文介绍基于Python语言,按照一定命名规则批量修改多个文件的文件名的方法。

1 需求

  已知现有一个文件夹,其中包括班级所有同学上交的作业文件,每人一份;所有作业文件命名格式统一,都是地信1701_姓名_学习心得格式。

快速修改大量文件的名称:Python代码实现

  现需要对每一位同学的作业文件加以改名,有很多种需求。

  第一种需求,将每一位同学作业文件名中原本是姓名的部分,都修改为学号。即原本的地信1701_姓名_学习心得修改为地信1701_学号_学习心得(每一位同学有且仅有一个学号,且相互不重复,且姓名与学号的对应关系我们是已知的),如下图所示。

快速修改大量文件的名称:Python代码实现

  第二种需求,将每一位同学作业文件名中原本姓名的部分的后面,都添加上学号。即原本的地信1701_姓名_学习心得修改为地信1701_姓名_学号_学习心得,如下图所示。

快速修改大量文件的名称:Python代码实现

  第三种需求,将每一位同学满足第二种需求后的作业文件名中的下划线_部分,都修改为连接符-。即原本的地信1701_姓名_学号_学习心得修改为地信1701-姓名-学号-学习心得,如下图所示。

快速修改大量文件的名称:Python代码实现

  好了,知道了需求我们就可以开始进行代码的编写了。

2 代码实现

  首先,导入必要的库。

import os from openpyxl import load_workbook

  接下来,我们首先需要让程序知道每一位同学的姓名与学号之间的对应关系。因为我们已知姓名与学号之间的关系,因此首先需要类似于下图的表格,其中为姓名与学号的一一对应关系。

快速修改大量文件的名称:Python代码实现

  接下来,我们需要将上述表格中的内容在Python中以字典的格式存储。具体代码如下,关于这一部分代码的解释我们在之前的文章中介绍过,这里就不再赘述。

original_path='F:/学习/2020-2021-2/形势与政策(二)/论文与学习心得/01_学习心得/地信1701-学习心得/' look_up_table_path='F:/学习/2020-2021-2/形势与政策(二)/论文与学习心得/01_学习心得/Name_Number.xlsx' look_up_table_row_start=2 look_up_table_row_number=32 name_number_dict={} look_up_table_excel=load_workbook(look_up_table_path) look_up_table_all_sheet=look_up_table_excel.get_sheet_names() look_up_table_sheet=look_up_table_excel.get_sheet_by_name(look_up_table_all_sheet[0]) for i in range(look_up_table_row_start,look_up_table_row_start+look_up_table_row_number): number=look_up_table_sheet.cell(i,1).value name=look_up_table_sheet.cell(i,2).value name_number_dict[number]=name

  接下来,进行第一种需求的代码实现。

# Replacement Renaming all_word=os.listdir(original_path) for i in range(len(all_word)): old_name=all_word[i] old_name_name_end=old_name.rfind('_') old_name_name=old_name[7:old_name_name_end] new_name_number=[k for k, v in name_number_dict.items() if v==old_name_name] new_name=old_name.replace(old_name_name,''.join(str(w) for w in new_name_number)) os.rename(original_path+old_name,original_path+new_name)

  其中,由于大家的姓名有两个字、三个字或者更多字,因此我们使用了old_name_name_end获取原有文件名称中姓名最后一个字所在的下标;而姓名开始的位置是确定的,即从而确定了每一位同学姓名在原有文件名中的起始与终止下标位置。同时利用replace,依据同学的姓名,在字典中搜索该同学的学号,最后将同学的名字替换为其对应的学号。

  其次,是第二种需求。

# Additional Renaming all_word=os.listdir(original_path) for i in range(len(all_word)): old_name=all_word[i] old_name_name_end=old_name.rfind('_') old_name_name=old_name[7:old_name_name_end] new_name_number=[k for k, v in name_number_dict.items() if v==old_name_name] old_name_list=list(old_name) insert_number=''.join(str(w) for w in new_name_number)+'_' old_name_list.insert(old_name_name_end+1,insert_number) new_name=''.join(old_name_list) os.rename(original_path+old_name,original_path+new_name)

  在这里,同样使用old_name_name_end获取原有文件名称中姓名最后一个字所在的下标,从而确定了每一位同学姓名在原有文件名中的起始与终止下标位置。此外,利用insert,将学号这一项插入到原有的文件名称中。

  最后,是第三种需求。

# Modified Renaming all_word=os.listdir(original_path) for i in range(len(all_word)): old_name=all_word[i] new_name=old_name.replace('_',"-",3) os.rename(original_path+old_name,original_path+new_name)

  这个就简单很多了,直接利用replace,用连接符-替换掉原有的下划线_即可。

  至此,大功告成。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
18评论

  • 精彩
  • 最新
  • 一,刚起步moment,如大佬所言,刷网课自学python及其三件套,然后直接上手实操项目,代码什么的都是Ctrl键➕c和Ctrl键➕v=网上现成=能看懂会改参数,但从零到一原创编写的不会
    二,后面有其他大佬建议,原因在于之前囫囵吞枣,应该得回归基础,找几本书看看。。。
    三,目前执行中,但书本看过的内容很快就忘,没啥感觉,对python及其第三库规则or参数还是不甚了解。。。
    四,本人非系统开发方向,非it程序员,但需要python做数理统计、数据挖掘、策略规则和算法建模,so应该咋办?求指导

    校验提示文案

    提交
    您好 我倒是从来没有看过书哈哈哈 我一般就是结合博客看 但是因为我需要做的东西都比较零散 您如果是需要这种系统的内容 那就可以多看一些相关的书籍 看看业内人士给出的关于书籍推荐的建议~

    校验提示文案

    提交
    上网搜causal inference brave and true

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • Excel+bat就行了 不用动用牛刀

    校验提示文案

    提交
    哦哦哦 好嘞好嘞 学到了学到了哈哈哈哈 又学会了一种方法 今后去试试看 非常感谢您的建议啦!!!!

    校验提示文案

    提交
    收起所有回复
  • powertoys

    校验提示文案

    提交
    哈哈哈哈哈 没错没错!

    校验提示文案

    提交
    收起所有回复
  • 大妈家是个神奇的圈子

    校验提示文案

    提交
    哈哈哈哈 没错没错 想看什么都能有哈哈哈!!

    校验提示文案

    提交
    收起所有回复
  • 整复杂了,这点量动手就成

    校验提示文案

    提交
    哈哈哈哈是的是的 当时主要想着学习一下代码操作 所以尝试了这个哈哈哈 实际花的时间也都够手动修改了~

    校验提示文案

    提交
    收起所有回复
  • 代码都是chatgpt写的吧

    校验提示文案

    提交
    哈哈哈哈谢谢谢谢!这个是自己写的 csdn上21年发的哈哈哈 那个时候我还不太会用这个

    校验提示文案

    提交
    收起所有回复
  • 拟用python做策略建模,包括但不限于:策略规则、算法建模:
    一、数据导入
    二、数据预处理(清洗规整、增删改查、数据类型转化)
    三、探索分析(可视自动化)
    四、特征衍生(组合变量批量自动化生成、特征筛选指标评估自动化)
    五、分箱筛选(变量分箱最优自动化)
    六、相关性构建(多类算法聚合:逻辑、回归、分类&机器学习、深度学习、强化学习
    七、检验评测(第六项计算各自的混淆矩阵指标,自动化计算结果)
    八、分数转换
    九、超参调优

    so针对第二至七项,就python及其第三方库(自动化)实操详解的电子书及其代码而言,特跪求大佬推荐。。。非AI或者chatgpt+XX系列,书籍需求具体如下:
    1、小白速成上手、简单易懂
    because:文科转型
    2、行业内公认靠谱,电子书中文版(暂不考虑:单个某库的说明书)
    because:内容忒多繁杂,且无常用算法库的聚合呈现
    3、需要2023年出版
    because:即使按书实操,旧版书均因为其所涉之第三方库的灭失、相同操作而新旧版本不适配、新旧版本变更操作等原因而导致无法实现同等功能)

    校验提示文案

    提交
    您好 不好意思这个我也还不是很了解来着 我一般看的python书籍也比较少哈哈哈哈 所以暂时没有单独了解过这个~ 您可以看一下相关经验的朋友 看看他们对此是否有什么推荐~

    校验提示文案

    提交
    收起所有回复
  • 搞得太复杂了 total commander现成有的东西还造轮子

    校验提示文案

    提交
    哦哦哦 好嘞好嘞!学到了学到了哈哈哈哈 之前还没用过这个软件 今后试试看~

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
99
扫一下,分享更方便,购买更轻松