第三方模塊。python
通常狀況下,用戶登陸時,根據密碼(有時候加鹽)等生成token,和id一塊兒-->存入redis;mysql
用戶再次訪問時(好比說支付時),請求中帶着id和token,後臺會將用戶帶來的token和redis中的進行對比,若一致,則匹配。git
1 import itsdangerous 2 3 salt='sdf234^#$@G'#設置鹽值 4 t = itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=30)#expires_in設置過時時間 5 res = t.dumps({'username':'yangfan','user_id':1})#參數爲要加密的數據,爲字典 6 token = res.decode()#返回bytes類型 decode解碼 7 print(token)
#運行結果 eyJhbGciOiJIUzUxMiIsImlhdCI6MTU0MjAzMDg3NywiZXhwIjoxNTQyMDMwOTA3fQ.eyJ1c2VybmFtZSI6InlhbmdmYW4iLCJ1c2VyX2lkIjoxfQ.jLwz4aL1ETAPFOs6CmDXYNECu4lNPVg0HjTcLkn-CUtWtrB9yKkO6fczxVJuwECEW83Y6FTgy47oV3X_EL45OQ
1 import itsdangerous 2 3 salt='sdf234^#$@G' 4 t = itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=30) 5 s='eyJhbGciOiJIUzI1NiIsImlhdCI6MTU0MTgyMDA1NiwiZXhwIjoxNTQxODIwMDg2fQ.eyJ1c2VybmFtZSI6InlhbmdmYW4iLCJ1c2VyX2lkIjoxfQ.FUfs92HuVKrt61AKpMjv1Iye8QDP7XUGOfgcrSusMv8' 6 res = t.loads(s) 7 print(res)
#若是解析成功,返回原來加密的參數 {'username':'yangfan','user_id':1} #若是token已過時,會報錯 ...... File "C:\Users\tyourai\AppData\Local\Programs\Python\Python36\lib\site-packages\itsdangerous\signer.py", line 169, in unsign raise BadSignature("Signature %r does not match" % sig, payload=value) itsdangerous.exc.BadSignature: Signature b'FUfs92HuVKrt61AKpMjv1Iye8QDP7XUGOfgcrSusMv8' does not match
sys.argv的做用是獲取到運行python文件時,傳入參數redis
1 import sys 2 print(sys.argv)
#運行結果,是個List ['D:/個人文檔/day11/test.py']
1 import flask 2 import sys 3 import time 4 server = flask.Flask(__name__) 5 6 @server.route('/') 7 def index(): 8 return '<h1>success</h1>' 9 if len(sys.argv)>1: #有參數傳入,不傳參時list長度爲1 10 port = sys.argv[1] 11 if port.isdigit(): 12 server.run(port=port)#輸入的參數做爲端口號 13 elif port=='--help': 14 print('這個python文件的做用是讓你發財!') 15 elif port=='--time': 16 print(time.strftime('%Y-%m-%d %H:%M:%S')) 17 else: 18 print('端口號必須是整數!') 19 else: 20 print('運行錯誤!請在運行的時候指定端口號\n' 21 '請按照下面的方式運行python文件!\n' 22 'python mock_server.py 8989')
內置模塊,可用來過濾目錄下的文件sql
import os print(os.listdir())#獲取當前目錄下的文件,返回List for f in os.listdir(): if f.endswith('.py'): os.remove(f)#刪除指定目錄下.py結尾的文件
1 import glob 2 #過濾目錄下的文件 3 print(glob.glob('*.py'))#返回一個List,內容是以.py結尾的文件 4 print(glob.glob('*1*'))#中間包含1的文件
#運行結果 C:\Users\tyourai\AppData\Local\Programs\Python\Python36\python.exe D:/個人文檔/day11/test.py ['a.py', 'b.py', 'mock_server.py', 'op_mysql.py', 'test.py', 'token111.py', '做業1,下載qq頭像.py', '呵呵呵.py', '析構函數.py', '類變量.py', '繼承.py'] ['token111.py', '做業1,下載qq頭像.py'] Process finished with exit code 0
1 def calc(a,b): 2 try: 3 res = a/b 4 except ZeroDivisionError as e: #能夠捕捉到ZeroDivisionError 5 res = '除數不能爲零, %s'%e 6 return res 7 # res = calc('k',1) #TypeError try後能夠跟多個except 8 # res = calc(10,0) # ZeroDivisionError 9 # res = calc(10,0) #TypeError
1 money = input('enter:') 2 try: 3 money = int(money) 4 except Exception as e:#產生異常了,走這邊 5 print('輸入金額錯誤!') 6 else:#沒有出現異常的話就走這裏 7 print(money+1) 8 finally:#不管怎樣都會執行 9 print('finally')
1 try: 2 x = 2 / 0 3 except Exception as e: 4 print(e) 5 print(e.args) #這是一個元組,在實際使用中,做爲返回值 6 print(type(e)) 7 print(type(e.args)) 8 else: 9 print('hahaha')
division by zero ('division by zero',) <class 'ZeroDivisionError'> <class 'tuple'>