1. 程式人生 > 其它 >今日內容之8月20號

今日內容之8月20號

今日內容之8月20日

概要

內建模組

  • os模組
  • hashlib模組
  • random模組
  • logging模組
  • json模組

詳情

必須強調的是

              """建立.py檔案時,檔名不能和模組名衝突"""
  • os模組
os模組是與作業系統互動的模組
import os
#資料夾的建立操作
os.mkdir(r'資料夾1') #只能在給定路徑下建立單級目錄
os.makedirs(r'資料夾2\資料夾3') #可建立多級或單級目錄

#資料夾的刪除操作
os.rmdir(r'資料夾1')          #刪除一級空目錄
os.rmdir(r'資料夾2\資料夾3')  #預設只能刪除路徑下一級空目錄
os.removedirs(r'檔案2\資料夾3\資料夾4')  #可以刪除多級目錄,必須確保為空

#檢視檔案、資料夾
os.listdir()        #檢視當前目錄下所有的檔案與資料夾(包括隱藏的)
os.listdir('D:\\')  #檢視制定目錄下所有的檔案與資料夾(包括隱藏的)
os.getcwd()         #檢視當前所在的路徑
os.chdir('C:\\Users')    #切換當前所在的路徑

#檔案、資料夾的判別
返回布林值
os.path.isdir(r'資料夾1') #判斷是否為資料夾
os.path.isfile(r'a.txt')  #判斷是否為檔案
os.path.exists(r'資料夾2\資料夾3')  #判斷當前路徑是否存在

#路徑拼接
    由於不同作業系統的路徑分隔符是不一樣的(如Windows系統是\,macOS是/),用簡單的字串拼接檔案路徑不能很好地相容不同作業系統。

#拼接路徑的函式可有效針對不同作業系統切換路徑分隔符
os.path.join('','')

#檢視檔案大小,以位元組數為單位
os.path.getsize(r'a.txt') 

  • hashlib模組

    用於加密的模組

將明文資料按照一定的邏輯編寫成密文資料,一般由數字與字母隨機組合。

常見的加密演算法有md5、base64、hmac、sha系列等。#越長越複雜!!!

import hashlib
'''
	一般採用md5加密即可,步驟如下
	1.將待加密的資料傳入演算法
	2.注意待加密資料必須是二進位制即bytes型別(重要)
	3.獲取加密之後的密文
'''
# 選擇加密演算法:md5
md5 = hashlib.md5()
# 將待加密的資料傳入演算法
md5.update(b'Ultraman Leo')
#獲取加密後的密文
res = md5.hexdigest()
print(res)
#以上加密結果   89e49a1f38fd926b64aa85898a12c3ce 

#有時需加密的資料過於簡單,可能會被對簡單常見資料的窮舉“破解”
#這時需進行加鹽處理,即在資料前後拼接額外的干擾資料
	md5.update('這是一勺鹽'.encode('utf8'))
	md5.update(b'Ultraman Leo')  # 資料必須是bytes型別(二進位制)
#以上加密結果   8085b7a728082393ef3dbb7360209659
可以看到兩次加密結果完全不同,加鹽操作還能使用動態資料(例如時間戳)

  • random模組

​ 用於生成隨機數的演算法

import random
#隨機返回一個0-1之間的小數
random.random()       #比如0.20553977729943185
#擲骰子
random.randint(1,6)   #隨機返回指定範圍的整數,包括首尾
#隨機抽取一個選項,可用於抽獎
random.choice(['一等獎','二等獎','謝謝回顧'])    #返回單個字串
random.choices(['一等獎','二等獎','謝謝回顧'])   #返回包含選項的列表
#隨機抽取多個選項,可指定個數
random.sample(['選項一','選項二','選項3',],個數)
#隨機打亂元素,可用於洗牌
poker = [3,4,5,6,7,8,9,10,'J','Q','K','smallJoker','largeJoker']
random.shuffle(poker)
print(poker)

某搜狗考試題>>>隨機驗證碼:產生一個五位數的驗證碼,每一位都可以是數字、小寫字母、大寫字母

  ```python
  def getCode(n):
      code = ''
      for i in range(n):
          '''抽取結果需轉換成字串'''
          #隨機抽一個數字
          r1 = str(random.randint(0, 9))
          #隨機抽一個大寫字母
          r2 = chr(random.randint(65, 90))
          #隨機抽一個小寫字母
          r3 = chr(random.randint(97, 122))
          #決定是數字還是大寫字母還是小寫字母
          code += random.choice([r1, r2, r3])
      return code
  print(getCode(5))
  ```

  • logging模組

    記錄程式執行日誌的模組

import logging
#日誌分為五級
logging.debug('除錯資訊')
logging.info('資訊')
logging.warning('警告')
logging.error('錯誤')
logging.critical('重大錯誤')    #級別最高
預設列印warning級別以上的日誌

#初始化日誌
logger = logging.getLogger()
#建立一個用於將日誌資訊寫入日誌檔案的處理器
saveLog = logging.FileHandler('test.log',encoding = 'UTF-8')

#建立第二個用於將日誌資訊列印到控制檯的處理器
printLog = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelnames) - %message)s')
#更改最低輸出日誌級別為debug
saveLog.setLevel(logging.DEBUG)
printLog.setLevel(logging.DEBUG)
#設定日誌格式
saveLog.setFormatter(formatter)
printLog.setForrmatter(formatter)
#logger物件可以新增多個處理器物件
logger.addHandler(saveLog)
logger.addHandler(printLog)
#輸出日誌
logger.debug('debug111')
logger.info('info222')
logger.warning('warning333')
logger.error('error444')
logger.critical('critical555')

  • json模組

    能實現常用資料型別與字串的相互轉換,用於不同程式語言的互動

import json
'''語法結構'''
#序列化
json.dumps(變數名)
#反序列化
json.loads(變數名)

userInfo = {'userName': 'Leo', 'passwd': 'UltramanL77'}
序列化方法常用資料型別轉化成json格式字串
res = json.dumps(userInfo)
print(res,type(res))
#列印{"userName": "Leo", "passwd": "UltramanL77"} <class 'str'>
'''只有json格式的字串前後才會有雙引號,這是判斷是否是json格式的依據'''
反序列化方法能將json格式字串轉化成對應的資料型別
resDic = json.loads(res)
print(resDic,ype(res))
#列印{'userName': 'Leo', 'passwd': 'UltramanL77'} <class 'str'>

'''序列化能對檔案進行'''
with open(r'json1.txt','w',encoding='utf8') as f:
    #將userInfo字典轉化成json字串存放於檔案json1.txt中
     json.dump(userInfo,f)

with open(r'json1.txt','r',encoding='utf8') as f:
    #將檔案json1.txt中的json字串轉化成字典
     res = json.load(f)
     print(res,type(res))
#列印{'userName': 'Leo', 'passwd': 'UltramanL77'} <class 'dict'>



'''並不是所有的python資料都能轉換成json格式的字串'''
    +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+