• python实现验证码与进度条


    简单验证码

    # 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))
    

    高级验证码

    极验科技验证码参考文档

    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期视频BBSavataru205777803476556477fm26gp0.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())  # 以二进制的方式取出数据
    
    
    
    # 图片验证码相关
    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())
    

    进度条

    import time
    satat = time.time()
    fac = 10
    
    for i in range(fac+1):
        print(f'
    {(i*10):^5}% [{i*"*"} {(fac-i)*"-"}]time:{(time.time()-satat):.3f}',end='')
        time.sleep(1)
    
  • 相关阅读:
    [扩展推荐] Laravel 中利用 GeoIP 获取用户地理位置信息
    10 个优质的 Laravel 扩展推荐
    5 个非常有用的 Laravel Blade 指令,你用过哪些?
    PHP 7.3 我们将迎来灵活的 heredoc 和 nowdoc 句法结构
    使用 Swoole 来加速你的 Laravel 应用
    一个成功的 Git 分支模型(适用于商业应用开发)
    github搜索语法
    python协程爬虫-aiohttp+aiomultiprocess使用
    python-协程、多线程、多进程性能比较
    functools模块-为函数预设args/kwargs参数
  • 原文地址:https://www.cnblogs.com/SkyOceanchen/p/11359730.html
Copyright © 2020-2023  润新知