Skip to content

Commit

Permalink
bug fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
OliverWu515 committed May 20, 2024
1 parent 65819a2 commit df09e54
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
- 动机:作为学习委员,收作业的时候常常困扰于文件的命名格式,总有人不按照格式命名。于是写了这个小程序,通过提取文件名里的学号,并通过记录有学号-姓名的表格找到姓名,并按照一定文件名规范进行重命名。

- 使用步骤:
- 先选取存有班级学号-姓名对应关系的xls表格。表格要求:需要是xls而不是xlsx;第一列是学号,第二列是姓名,学号姓名从第二行开始填写。
- 先选取存有班级学号-姓名对应关系的xls表格。表格要求:需要是xls而不是xlsx;第一列是学号,第二列是姓名,学号姓名从第二行开始填写。学号的允许格式:9-12个数字/字母的组合。(考虑数字+字母组合,是为了适配23级学生的学号)
- 然后选取存有待重命名文件的文件夹。注意,其中每个文件都要包含正确的学号。因为此程序依靠学号来查找姓名,从而进行替换。
- 然后填写“文件类型”框,指明需要转换的文件在哪些类型的文件中选取。需要写完整扩展名,比如 .pdf 或 .docx,而不是不带"点"的 pdf、docx。
- 最后编辑“替换后文件名”。其中,{0} 将会被替换成学号,{1} 将会被替换成姓名。如:{0}-{1}-实验报告1 将被替换为 学号-姓名-实验报告1,{0}-作业1 将被替换成 学号-作业1。该文本框中不需要写扩展名。
Expand Down
20 changes: 13 additions & 7 deletions homework_rename.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from tkinter import Tk, Label, Button, StringVar, Entry, Frame, scrolledtext, messagebox, filedialog
import xlrd

re_stuno = re.compile(r"[0-9A-Z]{9,12}")
re_stuno = re.compile(r"[0-9A-Za-z]{9,12}")
name_inf = {}


Expand All @@ -18,14 +18,16 @@ def read_nameinf():
table = wb.sheet_by_index(0)
nrows = table.nrows # 获取表格行数
for i in range(1, nrows):
name_inf[str(int(table.cell_value(i, 0)))] = str(table.cell_value(i, 1))
insert_message('找到' + str(len(name_inf)) + '个姓名-学号\n')
stuno = table.cell_value(i, 0)
if isinstance(stuno, (float, int)):
name_inf[str(int(stuno))] = str(table.cell_value(i, 1))
elif isinstance(stuno, str):
stuno_upper = stuno.upper()
name_inf[stuno_upper] = str(table.cell_value(i, 1))
insert_message('共找到' + str(len(name_inf)) + '个学号-姓名\n')
except FileNotFoundError:
messagebox.showerror(title='提示', message='未找到名单文件!')
name_inf = None
except ValueError as e:
messagebox.showerror(title='提示', message='大概率是因为第一列中的值不全是数字。具体错误信息:' + str(e))
name_inf = None
except Exception as e:
messagebox.showerror(title='提示', message='错误信息为' + str(e))
name_inf = None
Expand Down Expand Up @@ -70,7 +72,11 @@ def process():
stu_no = re.findall(re_stuno, filename)[0]
else:
continue
rectified_name = replaceby.format(stu_no, name_inf[stu_no]) + filetype
try:
rectified_name = replaceby.format(stu_no, name_inf[stu_no.upper()]) + filetype
except KeyError:
insert_message('未找到学号' + stu_no + '对应的姓名!\n')
continue
full_rectified_name = os.path.join(os.path.split(filename)[0], rectified_name)
os.rename(filename, full_rectified_name)
insert_message(os.path.split(filename)[1])
Expand Down

0 comments on commit df09e54

Please sign in to comment.