0x01 前言
在大家买买买的当天,我依旧按计划上线直播。可是!这次直播是有抽奖环节的,但我并没有准备抽奖用的软件,也信不过别人写的软件,所以自己写一个是唯一的出路。
因为时间的关系,我只有半小时编写和测试。各种酷炫的视图时没有的,只有白底黑字的CLI。
以下是这次直播抽奖的相关信息,文章底部有抽奖的结果:
0x02 思路
需要实现的功能很简单,只需要从一个文本文档里抽出3个电子邮箱即可。为提高可信度,需要在展示结果前将报名的人都打印出来。
最重要的是隐私保护,毕竟直播之后会将录像上传到各大网站,如果将报名者的邮箱直接公布出来就不太好了。
要怎样实现随机抽取的功能?这个我就不折腾了,用python的random库即可。
0x03 脚本
脚本不长不短,一共38行,其中包含输入内容的参数组合,首先是接收传入的参数,并读取文件:
#!/usr/bin/python3 import sys import random # 接受传入参数 draw_user_file_path = sys.argv[1] prize_num = sys.argv[2] # 读取参与者邮箱列表文件 r = open(draw_user_file_path, 'r') user_list = r.readlines() r.close()
这个脚本需要传入2个参数,第一个是文本文档的路径,第二个是一个数字。当执行脚本后,输出的结果是这样的:
[root@web tmp]# ./main.py 1.txt 1 参与奖品编号为:1 的抽奖参与者邮箱列表: -------------------- 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] --------------------
上面的代码读取文件后,得出的结果是一个列表,所以遍历该列表,再组合成需要的内容即可打印到终端上:
# 打印参与者列表 print('参与奖品编号为:' + str(prize_num) + ' 的抽奖参与者邮箱列表:') print('-' * 20) for i in user_list: print('参与者:' + '****' + i[3:].strip('\n')) print('-' * 20 + '\n' * 2)
其实参与者列表的打印和抽奖并没有什么关系,抽奖还是会用从文件中读取到的原始内容:
# 抽奖开始 print('抽奖开始!') print('-' * 20) i = 0 while i < 3: lucky_user = random.choice(user_list) user_list_input = user_list.remove(lucky_user) if i == 0: print('中奖者为:' + '****' + lucky_user[3:-1]) elif i == 1: print('候选中奖者1为:' + '****' + lucky_user[3:-1]) else: print('候选中奖者2为:' + '****' + lucky_user[3:-1]) i += 1 print('-' * 20) print('抽奖结束!' + '\n' * 2)
这里使用循环实现抽取1为中奖者与2位候选人,然后组合相应的内容并打印。
至此,整个脚本就完成了,最终执行的结果是这样的:
[root@web tmp]# ./main.py 1.txt 1 参与奖品编号为:1 的抽奖参与者邮箱列表: -------------------- 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] 参与者:****[email protected] -------------------- 抽奖开始! -------------------- 中奖者为:****[email protected] 候选中奖者1为:****[email protected] 候选中奖者2为:****[email protected] -------------------- 抽奖结束!
0x04 结语
简简单单的,就是差一点酷炫的滚动效果。有时间再更新,没更新继续用也行,毕竟基本功能已经实现了。
通过以下地址可以找到最新的脚本源码: