Hfut | Python实现今日校园未填写提醒

2024-03-13 11:59

本文主要是介绍Hfut | Python实现今日校园未填写提醒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

别让大好青春浪费在催今日校园上 —— 某懒狗班委


今天候机时无事可做,玩味突发,想到可以写一个督促今日校园的脚本,起飞前完成了七七八八,睡觉前写篇博客加以整理,菜鸡水平,大佬轻喷。


需求分析

根据每天导员发的表格编写自动提醒脚本,且考虑到QQ、微信的Python接口难找 我太菜不会 ,故选择短信和邮箱方式进行提醒。

  • 大致看一下导员从系统里导出的未填写名单:

在这里插入图片描述

  • 目测缺少电话,邮箱等所需信息

准备含本班同学学号、电话、邮箱地址的表格:

在这里插入图片描述

安装Python库

处理.xlsx文件:

pip install xlrd
pip install openpyxl

短信接口:

pip install twilio

邮箱接口:

pip install yagmail

信息处理

  • 以班级为筛选条件,创建未填写同学姓名列表(好家伙,这么多):

在这里插入图片描述

  • 根据上一步的姓名列表,创建邮箱列表:
    在这里插入图片描述

邮箱提醒

对比 Python 内置 smtplib 库、zmail、yagmail 三种发送方式后,yagmail 效果最好,代码如下:
在这里插入图片描述

  • 163邮箱获取授权码
  • QQ邮箱获取授权码

效果测试

这里我把未填写表格里的人换成我和倒霉蛋儿舍友:
在这里插入图片描述

在这里插入图片描述

显然他们并不知道发生了甚么,效果很好!

完整代码

import pandas as pdpath1 = '/Users/xxxxx/Desktop/未上报-2021-1-17.xlsx'
path2 = '/Users/xxxxx/Desktop/班级信息.xlsx'S1 = pd.read_excel(path1, sheet_name = 0)
S2 = pd.read_excel(path2, sheet_name = 0)S1 = S1[S1['班级'] == '集成xx班']['姓名']name = []for i in range(0,len(S1)):name.append(S1.iloc[i])print(name)email = []for i in range(0,len(name)):email_i = str(S2[S2['姓名'] == name[i]]['QQ'].iloc[0]) + str('@qq.com')email.append(email_i)print(email)import yagmail# 用户名、授权码、服务器地址
yag_server=yagmail.SMTP(user='xxxxx@qq.com',password='xxxxxx',host='smtp.qq.com')# 收件人列表
email_to=email
email_title="今日校园填写通知"
email_content="好哥哥好姐姐们,填填疫情收集信息吧,球球了,具体操作见附件"# 附件列表
email_attachments=['/Users/xxxxx/Desktop/附件.jpg']# 发送邮件
yag_server.send(email_to,email_title,email_content,email_attachments)# 关闭连接
yag_server.close()

后续

本来想一块加入短信提醒的,但腾讯云和阿里云只面向企业用户开放短信接口, 国外Twilio虽然有500条个人免费短信,但非VIP用户验证号码流程非常麻烦,等有时间再回来写 。

这里先简单贴一下Twilio的短信发送代码:

在这里插入图片描述

这篇关于Hfut | Python实现今日校园未填写提醒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804808

相关文章

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分