Python实现自动批量修改文件名称

 更新时间:2023年01月30日 14:09:19   作者:疯狂学习GIS  
这篇文章主要为大家详细介绍了如何基于Python语言,实现按照一定命名规则批量修改多个文件的文件名的效果,文中的示例代讲解详细,感兴趣的可以了解一下

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

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

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

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

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

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

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

首先,导入必要的库。

import os
from openpyxl import load_workbook

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

接下来,我们需要将上述表格中的内容在Python中以字典的格式存储。具体代码如下,关于这一部分代码的解释大家查看Python导入Excel表格数据并以字典dict格式保存即可,此处就不再赘述。

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,用连接符-替换掉原有的下划线_即可。

至此,大功告成。

到此这篇关于Python实现自动批量修改文件名称的文章就介绍到这了,更多相关Python批量修改文件名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • YOLOv5改进之添加SE注意力机制的详细过程

    YOLOv5改进之添加SE注意力机制的详细过程

    作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法,下面这篇文章主要给大家介绍了关于YOLOv5改进之添加SE注意力机制的相关资料,需要的朋友可以参考下
    2022-08-08
  • python sqlalchemy动态修改tablename两种实现方式

    python sqlalchemy动态修改tablename两种实现方式

    这篇文章主要介绍了python sqlalchemy动态修改tablename两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • opencv resize图片为正方形尺寸的实现方法

    opencv resize图片为正方形尺寸的实现方法

    这篇文章主要介绍了opencv resize图片为正方形尺寸的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python使用三角迭代计算圆周率PI的方法

    python使用三角迭代计算圆周率PI的方法

    这篇文章主要介绍了python使用三角迭代计算圆周率PI的方法,实例分析了Python迭代算法的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Python shutil模块文件和目录操作示例详解

    Python shutil模块文件和目录操作示例详解

    本文将会学习到 shutil 模块,包括其主要功能和示例代码,以帮助你更好地理解如何使用它来处理文件和目录
    2023-11-11
  • python 使用tkinter与messagebox写界面和弹窗

    python 使用tkinter与messagebox写界面和弹窗

    这篇文章主要介绍了python 使用tkinter与messagebox写界面和弹窗,文章内容详细,具有一的的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • pip安装路径修改的详细方法步骤

    pip安装路径修改的详细方法步骤

    在实际使用安装python的pip安装依赖库是非常的便捷的,下面这篇文章主要给大家介绍了关于pip安装路径修改的详细方法步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python深度学习TensorFlow神经网络基础概括

    Python深度学习TensorFlow神经网络基础概括

    这篇文章主要为大家介绍了Python深度学习中TensorFlow神经网络基础概括,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • python os.listdir()乱码解决方案

    python os.listdir()乱码解决方案

    在本篇文章里小编给大家整理的是一篇关于python os.listdir()乱码解决方案,对此有兴趣的朋友们可以学习下。
    2021-01-01
  • Anaconda2下实现Python2.7和Python3.5的共存方法

    Anaconda2下实现Python2.7和Python3.5的共存方法

    今天小编就为大家分享一篇Anaconda2下实现Python2.7和Python3.5的共存方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论