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

高級驗證碼

極驗科技驗證碼參考文檔python

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())  # 以二進制的方式取出數據
# 圖片驗證碼相關
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'\r{(i*10):^5}% [{i*"*"} {(fac-i)*"-"}]time:{(time.time()-satat):.3f}',end='')
    time.sleep(1)
相關文章
相關標籤/搜索