最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

hashlib模塊、subprocess模塊、loggin日志模塊及實(shí)戰(zhàn)

2022-10-27 21:04 作者:限量版范兒  | 我要投稿

hashlib加密模塊

1.何為加密 將明文數(shù)據(jù)處理成密文數(shù)據(jù) 讓人無法看懂 2.為什么加密 保證數(shù)據(jù)的安全 3.如何判斷數(shù)據(jù)是否是加密的 一串沒有規(guī)律的字符串(數(shù)字、字母、符號(hào)) 4.密文越長表示使用的加密算法(數(shù)據(jù)的處理過程)越復(fù)雜 5.常見的加密算法有哪些 md5、base64、hmac、sha系列 6.加密算法的基本操作 import hashlib res = hashlib.md5() ?# 選擇加密算法 res.update(b'hello world') ?# 傳入明文必須是轉(zhuǎn)成二進(jìn)制類型 # res.update('hello world'.encode('utf8')) # res.update(bytes('hello world', 'utf8')) 轉(zhuǎn)二進(jìn)制的3種方法: b'數(shù)字與字母' '字符串'.encode('utf8') bytes('字符串', 'utf8') ret = res.hexdigest() ?# 得到密文 print(ret) ? # ?5eb63bbbe01eeed093cb22bb8f5acdc3

加密補(bǔ)充說明

1.加密算法不變 內(nèi)容如果相同 那么結(jié)果肯定相同 可以一次性傳入 re.update(b'hello world') ree = re.hexdigest() print(ree) ?# # 5eb63bbbe01eeed093cb22bb8f5acdc3 分多次傳也可以 res.update(b'hello ') res.update(b'world') ret = res.hexdigest() ? print(ret) ?# 5eb63bbbe01eeed093cb22bb8f5acdc3 2.加密之后的結(jié)果是無法分解的 只能從明文到密文正向推導(dǎo) 無法從密文到明文反向推導(dǎo) ? ?常見的解密過程其實(shí)是提前猜測(cè)了很種結(jié)果 3.加鹽處理 在明文里面添加一些額外的干擾項(xiàng) ? ?1.選擇加密算法 ? ?2.傳入明文數(shù)據(jù) 4.動(dòng)態(tài)加鹽 干擾項(xiàng)是隨機(jī)變化的 比如當(dāng)前時(shí)間、用戶名...等 5.加密實(shí)戰(zhàn)操作 1.用戶密碼加密 ? ?2.文件安全性校驗(yàn)(比如:對(duì)文件的內(nèi)容加密 比對(duì)密文是否正確 如果不一樣則說明有中病毒的風(fēng)險(xiǎn)) ? ?3.文件內(nèi)容一致性校驗(yàn) ? ?4.大文件內(nèi)容加密 ? ? 截取部分內(nèi)容加密即可

subprocess模塊

模擬操作系統(tǒng)終端 執(zhí)行命令并獲取結(jié)果 import subprocess res = subprocess.Popen( ? ?'asffa', ?# 操作系統(tǒng)要執(zhí)行的命令 ? ?shell=True, ?# 固定配置 ? ?stdin=subprocess.PIPE, ?# 輸入命令 ? ?stdout=subprocess.PIPE, ?# 輸出結(jié)果 ) print('輸出如下', res.stdout.read().decode('gbk')) ?# 獲取操作系統(tǒng)執(zhí)行命令之后的正確結(jié)果 讀取的內(nèi)容得解碼用gbk解碼 在中國windows電腦系統(tǒng)底層cmd終端用的是gbk print('哎呀不行了', res.stderr) ?# 獲取操作系統(tǒng)執(zhí)行命令之后的錯(cuò)誤結(jié)果

logging日志模塊

1.如何理日志 簡(jiǎn)單的理解為是記錄行為舉止的操作(古代的史官) 2.日志的級(jí)別 五種級(jí)別: 日志級(jí)別等級(jí)CRITICAL > ERROR > WARNING > INFO > DEBUG 3.日志模塊要求 代碼無需掌握 但是要懂得如何拷貝并稍作修改就能使用 import logging file_handler = logging.FileHandler(filename='x1.log', mode='a',encoding='utf8') logging.basicConfig(format='%(asctime)S - %(name)s - %(levename)s - %(module)s: %(message)s', datefmt'%Y-%m-%d %H:%M:%S %p',handlers=[file_handler,],level=logging.ERROR) loggin.error('嗨嘍')

日志的組成

1.日志的產(chǎn)生 2.日志的過濾 基本不用 因?yàn)樵谌罩井a(chǎn)生階段就可以控制想要的日志內(nèi)容 3.輸出日志 4.日志格式 import logging # 1.日志的產(chǎn)生(準(zhǔn)備原材料) ? ? ? ?logger對(duì)象 logger = logging.getLogger('購物車記錄') # 2.日志的過濾(剔除不良品) ? ? ? ?filter對(duì)象>>>:可以忽略 不用使用 # 3.日志的產(chǎn)出(成品) ? ? ? ? ? ? handler對(duì)象 hd1 = logging.FileHandler('a1.log', encoding='utf-8') ?# 輸出到文件中 hd2 = logging.FileHandler('a2.log', encoding='utf-8') ?# 輸出到文件中 hd3 = logging.StreamHandler() ?# 輸出到終端 # 4.日志的格式(包裝) ? ? ? ? ? ? format對(duì)象 fm1 = logging.Formatter( ? ? ? ?fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: ?%(message)s', ? ? ? ?datefmt='%Y-%m-%d %H:%M:%S %p', ) fm2 = logging.Formatter( ? ? ? ?fmt='%(asctime)s - %(name)s: ?%(message)s', ? ? ? ?datefmt='%Y-%m-%d', ) # 5.給logger對(duì)象綁定handler對(duì)象 logger.addHandler(hd1) logger.addHandler(hd2) logger.addHandler(hd3) # 6.給handler綁定formmate對(duì)象 hd1.setFormatter(fm1) hd2.setFormatter(fm2) hd3.setFormatter(fm1) # 7.設(shè)置日志等級(jí) logger.setLevel(10) ?# debug # 8.記錄日志 logger.debug('寫了半天 好累啊 好熱啊')

日志配置字典

import logging import logging.config # 定義日志輸出格式 開始 standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \ ? ? ? ? ? ? ? ? ?'[%(levelname)s][%(message)s]' ?# 其中name為getlogger指定的名字 simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s' # 自定義文件路徑 logfile_path = 'a3.log' LOGGING_DIC = { ? ?'version': 1, ? ?'disable_existing_loggers': False, ? ?'formatters': { ? ? ? ?'standard': { ? ? ? ? ? ?'format': standard_format ? ? ? ?}, ? ? ? ?'simple': { ? ? ? ? ? ?'format': simple_format ? ? ? ?}, ? ?}, ? ?'filters': {}, ?# 過濾日志 ? ?'handlers': { ? ? ? ?# 打印到終端的日志 ? ? ? ?'console': { ? ? ? ? ? ?'level': 'DEBUG', ? ? ? ? ? ?'class': 'logging.StreamHandler', ?# 打印到屏幕 ? ? ? ? ? ?'formatter': 'simple' ? ? ? ?}, ? ? ? ?# 打印到文件的日志,收集info及以上的日志 ? ? ? ?'default': { ? ? ? ? ? ?'level': 'DEBUG', ? ? ? ? ? ?'class': 'logging.handlers.RotatingFileHandler', ?# 保存到文件 ? ? ? ? ? ?'formatter': 'standard', ? ? ? ? ? ?'filename': logfile_path, ?# 日志文件 ? ? ? ? ? ?'maxBytes': 1024 * 1024 * 5, ?# 日志大小 5M ? ? ? ? ? ?'backupCount': 5, ? ? ? ? ? ?'encoding': 'utf-8', ?# 日志文件的編碼,再也不用擔(dān)心中文log亂碼了 ? ? ? ?}, ? ?}, ? ?'loggers': { ? ? ? ?# logging.getLogger(__name__)拿到的logger配置 ? ? ? ?'': { ? ? ? ? ? ?'handlers': ['default', 'console'], ?# 這里把上面定義的兩個(gè)handler都加上,即log數(shù)據(jù)既寫入文件又打印到屏幕 ? ? ? ? ? ?'level': 'DEBUG', ? ? ? ? ? ?'propagate': True, ?# 向上(更高level的logger)傳遞 ? ? ? ?}, ?# 當(dāng)鍵不存在的情況下 (key設(shè)為空字符串)默認(rèn)都會(huì)使用該k:v配置 ? ? ? ?# '購物車記錄': { ? ? ? ?# ? ? 'handlers': ['default','console'], ?# 這里把上面定義的兩個(gè)handler都加上,即log數(shù)據(jù)既寫入文件又打印到屏幕 ? ? ? ?# ? ? 'level': 'WARNING', ? ? ? ?# ? ? 'propagate': True, ?# 向上(更高level的logger)傳遞 ? ? ? ?# }, ?# 當(dāng)鍵不存在的情況下 (key設(shè)為空字符串)默認(rèn)都會(huì)使用該k:v配置 ? ?}, } logging.config.dictConfig(LOGGING_DIC) ?# 自動(dòng)加載字典中的配置 # logger1 = logging.getLogger('購物車記錄') # logger1.warning('尊敬的VIP客戶 晚上好 您又來啦') # logger1 = logging.getLogger('注冊(cè)記錄') # logger1.debug('jason注冊(cè)成功') logger1 = logging.getLogger('紅浪漫顧客消費(fèi)記錄') logger1.debug('慢男 猛男 騷男')

配置參數(shù)

logging.basicConfig()函數(shù)中可通過具體參數(shù)來更改logging模塊默認(rèn)行為,可用參數(shù)有: filename:用指定的文件名創(chuàng)建FiledHandler,這樣日志會(huì)被存儲(chǔ)在指定的文件中。 filemode:文件打開方式,在指定了filename時(shí)使用這個(gè)參數(shù),默認(rèn)值為“a”還可指定為“w”。 format:指定handler使用的日志顯示格式。 datefmt:指定日期時(shí)間格式。 level:設(shè)置rootlogger(后邊會(huì)講解具體概念)的日志級(jí)別 stream:用指定的stream創(chuàng)建StreamHandler。可以指定輸出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默認(rèn)為sys.stderr。若同時(shí)列出了filename和stream兩個(gè)參數(shù),則stream參數(shù)會(huì)被忽略。 format參數(shù)中可能用到的格式化串: %(name)s Logger的名字 %(levelno)s 數(shù)字形式的日志級(jí)別 %(levelname)s 文本形式的日志級(jí)別 %(pathname)s 調(diào)用日志輸出函數(shù)的模塊的完整路徑名,可能沒有 %(filename)s 調(diào)用日志輸出函數(shù)的模塊的文件名 %(module)s 調(diào)用日志輸出函數(shù)的模塊名 %(funcName)s 調(diào)用日志輸出函數(shù)的函數(shù)名 %(lineno)d 調(diào)用日志輸出函數(shù)的語句所在的代碼行 %(created)f 當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示 %(relativeCreated)d 輸出日志信息時(shí)的,自Logger創(chuàng)建以 來的毫秒數(shù) %(asctime)s 字符串形式的當(dāng)前時(shí)間。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒 %(thread)d 線程ID。可能沒有 %(threadName)s 線程名??赡軟]有 %(process)d 進(jìn)程ID??赡軟]有 %(message)s用戶輸出的消息

鏈接:https://www.dianjilingqu.com/589063.html

hashlib模塊、subprocess模塊、loggin日志模塊及實(shí)戰(zhàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
团风县| 岳西县| 托克逊县| 洪泽县| 城步| 安庆市| 宜阳县| 门头沟区| 高青县| 亚东县| 清河县| 枣阳市| 岳普湖县| 胶南市| 巢湖市| 杨浦区| 鄂伦春自治旗| 德令哈市| 牡丹江市| 徐州市| 五寨县| 分宜县| 巴林左旗| 芜湖县| 集安市| 扬州市| 河北省| 惠水县| 林周县| 南投县| 顺义区| 库伦旗| 扎兰屯市| 柯坪县| 凉山| 崇文区| 宣化县| 青铜峡市| 扶风县| 江城| 闽清县|