平时我是个臭当班长的,干着大把脏活累活,为了能让自己更好的为班级服务,我用几十行写了个python脚本,完成一些累人的活
常见需求:就如疫情期间放假,这就很头疼了,要收集学生去哪,要收集学生从哪回来吧啦吧啦的问题,常见用问卷收集
所面临问题:
- 面对已收集的问卷,如何在班级中催收剩余没交的同学,毕竟大学生那拖延的尿性,总是有人爱答不理折磨班长
- 若把名单发群里,对于不看手机的同学来说属于无效催收,需要一对一发微信
- 如果这样还找不到人怎么办,自求多福吧
解决方法:
- 将完成人的名单和全班名单对比筛选出未提交人姓名
- 给这些未提交人群发微信通知
实现:
需求很简单,代码直接贴,前期准备,需要:全班人名单.xlsx,已提交名单.xlsx 且:均有姓名字段
- 查出未交名单并加入发送名单中
import pandas as pd
source = pd.read_excel('./全班人名单.xlsx', sheet_name='Sheet1',)
compare = pd.read_excel('E:/桌面/已提交名单.xlsx', sheet_name='Sheet1',)
Sname = list(source.姓名)
Cname = list(compare.姓名)
send_s=[]
for i in Sname:
if( i not in Cname):
print(i)
send_s.append(i)
submited = len(send_s)
print(str(submited)+"未交")
print(str(66-submited)+"已交")
- 登录微信
pip install -U wxpy -i "https://pypi.doubanio.com/simple/"
from wxpy import *
bot = Bot(True)
friends = bot.friends(True)
- 发送微信,这里有个前提,我设置的班级同学的微信备注是:18信科-姓名,用
for f in friends:
for name in send_s:
if(f.name == '18信科–{}'.format(name)):
f.send_msg("填一下微信班群发的问卷,很急")
print(str(f.name)+":已发送")
break
- 这是全班群发的样子
for f in friends:
for name in Sname:
if(f.name == '18信科–{}'.format(name)):
f.send_msg()
print(str(f.name)+":已发送")
break
- 这是给特定好友发微信的样子
for f in friends:
if(f.name == '父上'):
f.send_msg("我没钱了!")
print("发送文本成功")
break
|