首页 > 编程语言 >Python自动批量修改文件名称的方法

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

时间:2023-01-30 13:37:28浏览次数:58  
标签:old name 批量 Python up number 文件名称 table look

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

  至此,大功告成。

标签:old,name,批量,Python,up,number,文件名称,table,look
From: https://www.cnblogs.com/fkxxgis/p/17075233.html

相关文章

  • 【7】Python3函数
    Python函数函数是一个被命名的、独立的、完成特定功能的可重复使用的代码段,其可能给调用它的程序一个返回值。 被命名的:在Python中,大部分函数都是有名函数完成特定功......
  • 【KAWAKO】audiotsm-使用python对音频进行变速不变调处理
    目录安装库导入相关库定义reader定义writer定义WSLOA算法,并运行官方手册源码安装库pipinstallaudiotsm导入相关库importaudiotsmimportaudiotsm.io.wavimpo......
  • python语法到底多精妙?八大核心语句,带你深度了解
    Python是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视Python语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现Python语法之精妙的十......
  • 【6】Python3循环语句之while,for循环
    1.循环:有条件地重复地做一件事,每一次做的事情不同但类似在Python中,循环结构分为while和for两种。while判断条件:执行语句……执行语句可以是单个语句或语句块。判断......
  • 【5】Python3基础之运算符,条件控制if
    1、运算符分类算术运算符,赋值运算符,复合赋值运算符,比较运算符,逻辑运算符混合运算优先级顺序:()高于**高于* / // % 高于+ -     python条......
  • 使用python调用电脑扬声器
    1.安装pipinstallpyttsx3(1)支持中文和英文(2)该包是只能是调用笔记本电脑的扬声器,并进行语音播报,但是其语音播报的声音可能不太好听,我们可以设置成其他的声音(3)主要是......
  • python 读取 execl表格
    python读取表格pip2installxlrd获取sheet,data.sheets()[1]获取总行range(excel.nrows)获取行1的表数据excel.cell_value(rown,1)#!/usr/bin/envpython3i......
  • [记]python的音频波形读取与音视频剪辑
    1.音频波形读取importlibrosaaaa=librosa.load("233.mp3")#print(aaa)print(aaa[0])#波形数据print(aaa[1])#码率#print(len(aaa[0])/aaa[1])s_play=len(a......
  • python的猴子补丁monkey patch
    monkey_patch,这个词多少年前就在python编程中了解过,但是一直没有系统的总结下,近日又再次遇到这个概念,故此记录一下。 在python中由于其内部的实现机制导致其具备较大的编程......
  • python代码实现将PDF文件转为文本及其对应的音频
    代码地址:​​https://github.com/TiffinTech/python-pdf-audo​​  ============================================  importpyttsx3,PyPDF2#insertnameofyourpdfpd......