第五章 模塊之random 、hashlib、time /datetime

5.2 random 返回隨機生成的一個實數

  • random.randint() 返回隨機生成的一個實數算法

    import random #調用模塊

    def get_random_code(length=6):#變量爲6
       data = []
       for i in range(length):#循環6次
           v = random.randint(65,90)#生成65-90之間隨機數字
           data.append(chr(v))#將v變爲字符追加到data列表中

       return  ''.join(data)#將列表中元素連接,變爲空字符串

    code = get_random_code()
    print(code)#6位隨機字符
  • random.choice 從序列中隨機抽選一個函數 驗證碼,抽獎app

    import random
    print(random.choice([1,2,3,4,5]))
  • random.sample 一個獎項多我的dom

    import random
    print(random.sample([1,2,3,4],3)) # [3, 2, 4]
  • random.uniform 隨機小數ide

    import random
    print(random.uniform(1,5)) # 3.599380534928744
  • random.shuffle 將序列順序打亂 洗牌函數

  • random.random()生成0和1之間的隨機浮點數floatui

5.3 hashlib 摘要算法模塊 Hmac算法

  • 加密模塊。md5/sha編碼

    import hashlib
    md5 = hashlib.sha1('鹽'.encode())
    md5.update(b'str')
    print(md5.hexdigest())
    • 兩個文件的md5值是相同的加密

      import hashlib

      md5 = hashlib.md5()
      #md5.update('hello'.encode())
      #md5.update('wusir'.encode())
      md5.update('hello,wusir'.encode())
      # 46879507bf541e351209c0cd56ac160e
      46879507bf541e351209c0cd56ac160e
      print(md5.hexdigest())

       

    # 將指定的 「字符串」 進行加密
     1 import hashlib
     2  3 def get_md5(data):
     4     obj = hashlib.md5()#md5對象,md5不能反解,可是加密是固定的,就是關係是一一對應,因此有缺陷,能夠被對撞出來,若是沒有參數,因此md5遵照一個規則,生成同一個對應關係,
     5     #若是加了參數,就是在原先加密的基礎上再加密一層,這樣的話參數只有本身知道,防止被撞庫。
     6     obj.update(data.encode('utf-8'))#要對哪一個字符串進行加密,就放這裏
     7     result = obj.hexdigest()#拿到加密字符串
     8     return result# 返回加密字符串
     9 10 val = get_md5('123')
    11 print(val)
    View Code
     
    # 應用,用戶登陸
    import hashlib
    USER_LIST = []
    def get_md5(data):
        obj = hashlib.md5("12:;4436ff123ad".encode('utf-8'))
        obj.update(data.encode('utf-8'))
        result = obj.hexdigest()
        return result
    ​
    def register():
        print('**************用戶註冊**************')#提示
        while True:#循環註冊
            user = input('請輸入用戶名:')#輸入
            if user == 'N':#判斷輸入是否爲N
                return  #結束循環、函數
            pwd = input('請輸入密碼:')#輸入密碼
            temp = {'username':user,'password':get_md5(pwd)}#用戶名和密碼經過加密放在字典裏
            USER_LIST.append(temp)#將字典追加到列表裏
    def login():
        print('**************用戶登錄**************')#提示
        user = input('請輸入用戶名:')#輸入
        pwd = input('請輸入密碼:')
    ​
        for item in USER_LIST:#循環列表裏的字典
            if item['username'] == user and item['password'] == get_md5(pwd):#比較輸入的內容與字典裏是否同樣
                return True
    ​
    register()
    result = login()
    if result:#判斷返回值是否爲真
        print('登錄成功')
    else:
        print('登錄失敗')
    View Code
     
  • hmac輸出的長度和原始哈希算法的長度一致。須要注意傳入的key和message都是bytes類型,str類型須要首先編碼爲bytesspa

    import hmac
    message = b'Hello world'
    key = b'secret'
    h = hmac.new(key,message,digestmod='MD5')
    print(h.hexdigest())

     

5.4 time /datetime 時間模塊

  • time.time() 時間戳code

    import time 

    v = time.time() # 時間戳:1970-1-1 00:00
  • time.timezone 當前時區與時間戳相差的秒數

    import time
    print(time.timezone) # -28800
  • time.sleep(2) 睡2秒

  • datetime.now() 當前本地時間

    from datetime import datetime
    v1 = datetime.now()
    print(v1) # 2019-04-18 17:52:33.046206
  • timezone(timedelta(hours=7)) 獲取東7區時間

    from datetime import datetime,timezone,timedelta

    tz = timezone(timedelta(hours=7)) # 當前東7區時間
    v2 = datetime.now(tz)
  • datetime.utcnow() 當前UTC時間

    from datetime import datetime,timezone,timedelta

    v3 = datetime.utcnow() # 當前UTC時間
    print(v3)
  • strftime 把datetime格式轉換成字符串

    from datetime import datetime,timezone,timedelta

    v1 = datetime.now()
    print(v1,type(v1))
    val = v1.strftime("%Y-%m-%d %H:%M:%S")
    print(val)
  • strptime 字符串轉成datetime

    from datetime import datetime,timezone,timedelta

    v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
    print(v1,type(v1))
  • timedelta datetime時間的加減

    from datetime import datetime,timezone,timedelta

    v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
    v2 = v1 - timedelta(days=140)
    date = v2.strftime('%Y-%m-%d')
    print(date)
  • 時間戳和datetime關係

    import time
    from datetime import datetime,timezone,timedelta

    ctime = time.time()
    print(ctime)
    v1 = datetime.fromtimestamp(ctime)
    print(v1)

    v1 = datetime.now()
    val = v1.timestamp()
    print(val)
相關文章
相關標籤/搜索