python实现验证码与进度条

枫铃3年前 (2021-09-30)Python234

1.简单验证码

# python 实现验证码
#1

import random
n = 5

lis = list()
count = 0
while  count<n:
    count+=1
    lis.append(str(random.randint(0,9)))
    lis.append(chr(random.randint(65,90)))
    lis.append(chr(random.randint(97,122)))

lis2 = random.sample(lis,n)
print(lis2)

lis1 = ''.join(lis2)
print(lis1)
# for i in lis2:
#     print(i,end=' ')
#2
def get_verified(lenth):
    code = ''
    for i in range(lenth):
        num = str(random.randint(0,9))
        alp = chr(random.randint(97,122))
        ATP = chr(random.randint(65,90))
        code+=str(chr(random.randint(65,90)))
    return code
print(get_verified(5))

2.高级验证码

# 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
# 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
from PIL import Image,ImageDraw,ImageFont
import random
from io import BytesIO,StringIO
"""
BytesIO,  能够存储数据 并以二进制的格式再返回给你
StringIO  能够存储数据 并以字符串的格式再返回给你
"""
"""
Image,  产生图片的
ImageDraw,  产生画笔的
ImageFont  控制字体样式
"""
def get_random():
    return random.randint(0,255),random.randint(0,255),random.randint(0,255)
def get_code(request):
    # 推到思路1:直接拿后端现成的图片 二进制模式打开发送
    # with open(r'D:\上海Python11期视频\python11期视频\BBS\avatar\u205777803476556477fm26gp0.jpg','rb') as f:
    #     data = f.read()
    # return HttpResponse(data)
# 图片验证码相关
def get_code(request):

    # 推导思路2:利用模块产生图片  再发送给前端 pillow
    # img_obj = Image.new('RGB',(310,35),'green')  # 生成了一个图片对象
    # img_obj = Image.new('RGB',(310,35),get_random())  # 生成了一个图片对象
    # # 先利用文件操作将图片对象写入文件中
    # with open('xxx.png','wb') as f:
    #     img_obj.save(f,'png')
    # # 再利用文件操作将图片以二进制形式读取出来发送
    # with open('xxx.png','rb') as f:
    #     data = f.read()
    # return HttpResponse(data)
# 图片验证码相关
def get_code(request):

    # 推到思路3:不再利用文件存取数据  借助于内存管理器
    # img_obj = Image.new('RGB',(310,35),get_random())
    # io_obj = BytesIO()  # 生成一个内存管理器对象
    # img_obj.save(io_obj,'png')  # 你可以将io_obj当成文件句柄f
    # return HttpResponse(io_obj.getvalue())  # 以二进制的方式取出数据
# 图片验证码相关
# 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
# 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
def get_code(request):
    # 推到思路4(终极步骤)  图片上写字
    img_obj = Image.new('RGB',(310,35),get_random())
    img_draw = ImageDraw.Draw(img_obj)  # 生成一个画笔对象
    img_font = ImageFont.truetype('static/font/111.ttf',30)  # 字体的样式
    """
    所有的字体样式都是由.ttf结尾的文件控制的
    """
    # 随机生成验证码  a~z  A~Z  0~9
    code = ''
    for i in range(5):
        random_upper = chr(random.randint(65,90))
        random_lower = chr(random.randint(97,122))
        random_int = str(random.randint(0,9))
        temp = random.choice([random_upper,random_lower,random_int])
        # 将产生的随机字符写到图片上
        img_draw.text((i*45+45,0),temp,get_random(),img_font)
        code += temp
    print(code)
    # 将随机验证码存储取来  以便其他函数调用
    request.session['code'] = code

    io_obj = BytesIO()
    img_obj.save(io_obj,'png')
    return HttpResponse(io_obj.getvalue())

3.进度条

import time
satat = time.time()
fac = 10

for i in range(fac+1):
    print(f'\r{(i*10):^5}% [{i*"*"} {(fac-i)*"-"}]time:{(time.time()-satat):.3f}',end='')
    time.sleep(1)

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。