🥝🥝统一收集整理文件时,经常会遇到有人没有按照标准格式命名文件,一个一个改费时又头疼,我们可以利用Python代码对文件名称进行批量改名处理,输出未完成人员名单
展示介绍
实现功能介绍
将文件夹内所有不规范文件名统一改成
计算(3+4)_学号_姓名
的形式
(文件命名中应至少包含人名)
🍊修改前:
🍊修改后:
🍊输出未完成名单(此处仅有一人未完成):
整体代码展示(👈👈需要全部代码直接点击这里)
import xlrd2
import os
# 打开excel,所有姓名所在文件
data_excel = xlrd2.open_workbook('D:\\文件\\花名册.xls')
# 获取book中的sheet工作表的三种方法,返回一个xlrd.sheet.Sheet()对象
# table = data_excel.sheets()[0] 通过索引顺序获取sheet
# table = data_excel.sheet_by_index(sheetx=0) 通过索引顺序获取sheet
table = data_excel.sheet_by_name(sheet_name='Sheet2') # 通过名称获取
# 返回某列中所有单元格的数据组成的列表,获得姓名列表
cols_name = table.col_values(1,start_rowx=1,end_rowx=None) # 参数1表示第几列,以0开始;start_rowx表示起始行;end_rowx表示结束行,None表示以识别到空单元格结束
# 返回某列中所有单元格的数据组成的列表,获得学号列表
cols_no = table.col_values(0,start_rowx=1,end_rowx=None)
# 获得作业文件列表
filepath = 'C:\\Users\\清明\\Desktop\\计算3+4软件测试'
list_name = os.listdir(filepath)
# os默认处理当前项目目录下文件,重新设定处理目录,防止出现文件找不到
os.chdir(filepath)
# os默认处理当前项目目录下文件,重新设定处理目录,防止出现文件找不到
os.chdir(filepath)
for i in range(len(cols_name)): # 从头同时遍历姓名和学号
for work in list_name:
if cols_name[i] in work: # 文件名中是否包含当前学生姓名
os.rename(work,"计算(3+4)_"+str(cols_no[i])+'_'+str(cols_name[i])+".pdf")
print('未完成名单:')
tag = 0
for name in cols_name:
for work in list_name:
if name in work:
break
else: # for执行完执行else,break不会执行
print(name)
代码实现步骤
模块安装
🍉本次我们需要导入os、xlrd2两个模块,需要预先对其安装(二选一即可)
1.WIN+R
、输入cmd进行命令工具,输入pip install xlrd2
安装模块(os为Python内置模块,无需安装)
2.Pycharm环境下,通过File > Settings > Project:pythonProject > Python Interpreter
,点击小加号
,输入xlrd2
,点击Install Package
进行安装
模块使用(✍✍代码编写)
🍇1.导入模块
import xlrd2
import os
🍌2.创建一个excel文件,第一列输入学号,第二列输入姓名,用于程序获取数据为文件命名
🍊3.获取excel的姓名、学号列表
# 打开excel,所有姓名所在文件
data_excel = xlrd2.open_workbook('D:\\文件\\3+4\\花名册.xls')
# 获取book中的sheet工作表的三种方法,返回一个xlrd.sheet.Sheet()对象
# table = data_excel.sheets()[0] 通过索引顺序获取sheet
# table = data_excel.sheet_by_index(sheetx=0) 通过索引顺序获取sheet
table = data_excel.sheet_by_name(sheet_name='Sheet2') # 通过名称获取
# 返回某列中所有单元格的数据组成的列表,获得姓名列表
cols_name = table.col_values(1,start_rowx=1,end_rowx=None) # 参数1表示第几列,以0开始;start_rowx表示起始行;end_rowx表示结束行,None表示以识别到空单元格结束
# 返回某列中所有单元格的数据组成的列表,获得学号列表
cols_no = table.col_values(0,start_rowx=1,end_rowx=None)
🍎4.获取修改目标文件夹下的所有文件
# 获得作业文件列表
filepath = 'C:\\Users\\清明\\Desktop\\计算3+4软件测试'
list_name = os.listdir(filepath)
🍈5.修改os默认处理目录为目标目录,否则执行报错找不到文件!
# os默认处理当前项目目录下文件,重新设定处理目录,防止出现文件找不到
os.chdir(filepath)
🍒6.遍历修改文件名,不要忘记添加后缀
# os默认处理当前项目目录下文件,重新设定处理目录,防止出现文件找不到
for i in range(len(cols_name)):
for work in list_name:
if cols_name[i] in work:
os.rename(work,"计算(3+4)_"+str(cols_no[i])+'_'+str(cols_name[i])+".pdf") # 一定不要忘记添加后缀
🍌7.输出未完成名单
print('未完成名单:')
tag = 0
for name in cols_name:
for work in list_name:
if name in work:
break
else: # for执行完执行else,break不会执行
print(name)
🍓8.执行原理
(1)文件名修改
(2)输出名单