Python自动批量修改文件名称的方法

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

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

Python自动批量修改文件名称的方法

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

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

Python自动批量修改文件名称的方法

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

Python自动批量修改文件名称的方法

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

Python自动批量修改文件名称的方法

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

  首先,导入必要的库。

import os
from openpyxl import load_workbook

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

Python自动批量修改文件名称的方法

  接下来,我们需要将上述表格中的内容在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技术站

(0)
上一篇 2023年3月31日 下午9:08
下一篇 2023年3月31日

相关文章

  • Python GDAL库在Anaconda环境中的配置

      本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法。   需要注意的是,本文介绍基于conda install命令直接联网安装GDAL库的方法;这一方法有时不太稳定,且速度较慢。因此,如果有需要,大家可以参考Anaconda环境GDAL库基于whl文件的配置方法这篇文章中的方法,可以更快速地配置GDAL库。   …

    python 2023年4月18日
    00
  • Python修改柱状图边缘柱子与图边界的距离

      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图、条形图最两侧的柱子与图像边缘之间距离的方法。   最近,绘制了一个水平的柱状图,但是发现图的上、下边距(不是柱子与柱子相互之间的间距,而是最上方与最下方柱子各自与图边缘的距离)相对较大,非常影响美观。同时需要说明的是,本文这里的柱状图纵坐标变量是代表变量名称的不同的字符串,而不…

    Python开发 2023年3月31日
    00
  • Python实现类别变量的独热编码(One-hot Encoding)

      本文介绍基于Python下OneHotEncoder与pd.get_dummies两种方法,实现机器学习中最优的编码方法——独热编码的方法。 目录 1 OneHotEncoder 2 pd.get_dummies   在数据处理与分析领域,对数值型与字符型类别变量加以编码是不可或缺的预处理操作;这里介绍两种不同的方法。 1 OneHotEncoder  …

    Python开发 2023年3月31日
    00
  • Python ArcPy批量计算多时相遥感影像的各项元平均值

      本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取。   在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取——这一操作很好实现,基于ArcMap软件或者简单的Python代码就可以实现;但有时候,我们会需要结合同一地区、不同时相的多景遥感影像,求取每一个像元在全部时相中…

    python 2023年4月19日
    00
  • Python绘制神经网络模型图

      本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法。   最近需要进行神经网络结构模型的可视化绘图工作。查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块,就需要手动用DOT语言进行图片描述,比较花时间;最终,发现利用第三方的ann_visualizer模块,可以实现对已有神经网络的直接可视化,过程较为方便,本文…

    Python开发 2023年3月31日
    00
  • Python arcpy创建栅格、批量拼接栅格

      本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作。   首先,相关操作所需具体代码如下: import os import arcpy file_path=”G:/Postgraduate/LAI_Glass_RTlab/A2018161_Dif/DRT/” out_file_path=”G…

    Python开发 2023年3月31日
    00
  • 基于遗传算法的地图四色原理绘图上色的Python代码

      本文介绍利用Python语言,实现基于遗传算法(GA)的地图四色原理着色操作。 1 任务需求   首先,我们来明确一下本文所需实现的需求。   现有一个由多个小图斑组成的矢量图层,如下图所示。   我们需要找到一种由4种颜色组成的配色方案,对该矢量图层各图斑进行着色,使得各相邻小图斑间的颜色不一致,如下图所示。   在这里,我们用到了四色定理(Four …

    Python开发 2023年3月31日
    00
  • Python导入Excel表格数据并以字典dict格式保存

      本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法。   我们以如下所示的一个表格(.xlsx格式)作为简单的示例。其中,表格共有两列,第一列为学号,第二列为姓名,且每一行的学号都不重复;同时表格的第一行为表头。   假设我们需要将第一列的学号数据作为字典的键,而第二列姓名数据作为字典的值。…

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部