2. 现有存放学生照片的文件夹Images及某教务系统导出学生名单Excel表。请编写程序,根据Excel表的数据信息进行比对,将学生的照片以身份证号进行重命名,并按学院分类导出到以学院命名的文件夹中

该脚本读取Excel文件中的学籍信息,包括学号、身份证号、学院等,对图片进行重命名并按学院分类,同时将数据导入SQLite数据库。
摘要由CSDN通过智能技术生成

照片涉及隐私,就不放了

名单如下:

 

代码如下:
如有错误希望各位指出

import xlrd
import os
import shutil
import sqlite3

# 获取Excel文件
data = xlrd.open_workbook("E:\Python实验报告6_素材\名单.xlsx")
sheet1 = data.sheet_by_name("Sheet1")
sheet2 = data.sheet_by_name("Sheet2")
path = "E:\Python实验报告6_素材\Images"
path2 = "E:\Python实验报告6_素材"
suffix = ".jpg"
# 学号初始化
Student_number = sheet1.col_values(2, start_rowx=1, end_rowx=None)
Student_number = [int(i) for i in Student_number]
Student_number = [str(i) for i in Student_number]
# 身份证号初始化
Student_id = sheet1.col_values(3, start_rowx=1, end_rowx=None)
Student_id = [str(i) for i in Student_id]
# 学院初始化
Student_faculty = sheet1.col_values(4, start_rowx=1, end_rowx=None)
Student_faculty = [str(i) for i in Student_faculty]
set_Student_faculty = set(Student_faculty)
# 创建学院文件夹,利用集合提纯
for faculty in set_Student_faculty:
    os.mkdir("E:\Python实验报告6_素材\{}".format(faculty))
# 将学号与身份证号一一对应,将其转换成元组
dictionary = dict(zip(Student_number, Student_id))
dictionary = sorted(dictionary.items(), key=lambda d: d[0], reverse=False)
dictionary = dict(dictionary)  # 再将其转换成字典类型
# 将身份证号与学院一一对应,将其转换成元组
dictionary2 = dict(zip(Student_id, Student_faculty))
dictionary2 = sorted(dictionary2.items(), key=lambda d: d[0], reverse=False)
dictionary2 = dict(dictionary2)

# 将学生的照片以身份证号进行重命名
for file in os.listdir(path):
    for key in dictionary:
        if file == key + suffix:
            os.renames(os.path.join(path, file), os.path.join(path, dictionary.get(key)) + suffix)
            # rename必须将文件路径下的文件和另一个文件路径下的文件进行重命名
# 将学生照片按学院分类导出到以学院命名的文件夹中
for file in os.listdir(path):
    for key in dictionary2:
        if file[:-4] == key:
            shutil.move(os.path.join(path, file), os.path.join(path2, dictionary2.get(key)))
# 与数据库建立连接
all_row = sheet1.nrows
conn = sqlite3.connect("student.db")
cur = conn.cursor()
# 建表
cur.execute("DROP TABLE IF EXISTS list")
cur.execute("CREATE TABLE list(cname TEXT,sex TEXT,sno INT,id TEXT,faculty TEXT,major TEXT,class TEXT)")
# 插入数据
for i in range(all_row):
    data1 = sheet1.row_values(i)
    cur.execute('''insert into list values('%s','%s','%s','%s','%s','%s','%s')''' % (data1[0],
                                                                                     data1[1], data1[2], data1[3],
                                                                                     data1[4], data1[5], data1[6]))
cur.close()
conn.commit()
conn.close()

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R7CKB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值