基于Python一次性批量修改多个文件的文件名 |
您所在的位置:网站首页 › 根据表格批量修改文件名称 › 基于Python一次性批量修改多个文件的文件名 |
1 需求
现有一个文件夹,其中包括所有班级同学上交的作业,每人一份;所有作业命名格式统一,都是地信1701_姓名_学习心得格式。 现需要对每一位同学的作业加以改名,有很多种需求。 第一种需求,将每一位同学作业文件名中原本是姓名的部分,都修改为学号。即原本的地信1701_姓名_学习心得修改为地信1701_学号_学习心得(每一位同学有且仅有一个学号,且相互不重复,且姓名与学号的对应关系我们是已知的),如下图所示。 第二种需求,将每一位同学作业文件名中原本姓名的部分的后面,都添加上学号。即原本的地信1701_姓名_学习心得修改为地信1701_姓名_学号_学习心得,如下图所示。
首先,导入必要的库。 import os from openpyxl import load_workbook接下来,我们首先需要让程序知道每一位同学的姓名与学号之间的对应关系。因为我们已知姓名与学号之间的关系,因此首先需要类似于下图的表格,其中为姓名与学号的一一对应关系。
接下来,进行第一种需求的代码实现。 # 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,用连接符-替换掉原有的下划线_即可。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |